اذهب إلى المحتوى

السؤال

نشر

كيف انشاء جدول في قاعدة البيانات يوضع فيه سطر واحد فقط ...وهذا السطر يستقبل بيانات من المستخدم 

بحيث تكون هذه البيانات متغيرة بأستمرار كلما قام المستخدم بادخال البيانات تتغير البيانات الموجودة في السطر

البيانات التي يدخلها المستخدم هي ارقام .... اريد ان اقوم بمعادلات رياضية على الارقام التي يدخلها المستخدم و اعرض النتيجة في المتصفح

 

Recommended Posts

  • 0
نشر (معدل)

في ملف models:

class Tabel(models.Model):
    number = models.FloatField() #في حال كانت القيمة التي تريدها عشرية
class Tabel(models.Model):
    number = models.IntegerField() # في حال تريد القيم فقط أرقام صحيحة

طبعاً يمكنك التغير على قيمتها في أي وقت من ملف views.py

على الدالة التي تقوم بأمر التعديل على حسب الفورم التعديل الخاص بك.
تقوم بستقبال البيانات العنصر المراد التعديل عليه و من ثم تحديثها و من ثم حفظها و التحويل على الصفحة التي تريدها على حسب مشروعك.

def post_tabel(request,pk):
    data = request.data
    number = data['number']
    my_tabel = MyTabel.objects.get(pk=pk)
    my_tabel.number = number
    my_tabel.save()

    return render(request, "index.html")

 

تم التعديل في بواسطة محمد حجي2
  • 0
نشر
بتاريخ منذ ساعة مضت قال محمد حجي2:

في ملف models:


class Tabel(models.Model):
    number = models.FloatField() #في حال كانت القيمة التي تريدها عشرية

class Tabel(models.Model):
    number = models.IntegerField() # في حال تريد القيم فقط أرقام صحيحة

طبعاً يمكنك التغير على قيمتها في أي وقت من ملف views.py

على الدالة التي تقوم بأمر التعديل على حسب الفورم التعديل الخاص بك.
تقوم بستقبال البيانات العنصر المراد التعديل عليه و من ثم تحديثها و من ثم حفظها و التحويل على الصفحة التي تريدها على حسب مشروعك.


def post_tabel(request,pk):
    data = request.data
    number = data['number']
    my_tabel = MyTabel.objects.get(pk=pk)
    my_tabel.number = number
    my_tabel.save()

    return render(request, "index.html")

 

ممكن توضح اكثر في views.py

 

  • 0
نشر (معدل)
بتاريخ منذ ساعة مضت قال عزوز عزوز2:

ممكن توضح اكثر في views.py

 

هذا سيكون مثال أوضح في ملف HTML و التي سيظهر فيه المعلومات التي تريد التعديل عليها من مفترض أن ترسل مع عملية التعديل id الخاص بالعنصر الذي تريد تعديله حتى تستقبل دالة الخاصة بالتعديل العنصر المعني تعديله: هنا في المثال التالي من ملف html ستجد أن رابط إرسال يحتوي على ID:

ملاحظة ستجد تعليقات على النقاط المهمة في الكود تابع أمثلة:

<h1>Members</h1>

<table border="1">
{% for x in mymembers %}
<tr> 
<td><a href="update/{{ x.id }}">{{ x.id }}</a></td> <!-- في هذا السطر تستطيع ان ترى ان رابط عبارة عن احد 
URL -->     ^^^^^^^^^^^^^^^^^^ هنا
<td>{{ x.firstname }}</td>
<td>{{ x.lastname }}</td>
<td><a href="delete/{{ x.id }}">delete</a>
</tr>
{% endfor %}
</table>

<p>
<a href="add/">Add member</a>
</p>

وفي ملف members/views.py:
ستجد طريقة حذف و التعديل و إضافة و عرض CRUD المطلوب مشروح في الكود بالتعليقات #

from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader
from django.urls import reverse
from .models import Members

# المطلوب في الدالة أخيرة 
def index(request):
  mymembers = Members.objects.all().values()
  template = loader.get_template('index.html')
  context = {
    'mymembers': mymembers
  }
  return HttpResponse(template.render(context, request))
  
def add(request):
  template = loader.get_template('add.html')
  return HttpResponse(template.render({}, request))
  
 def addrecord(request):
  first = request.POST['first']
  last = request.POST['last']
  member = Members(firstname=first, lastname=last)
  member.save()
  
return HttpResponseRedirect(reverse('index'))

def delete(request, id):
  member = Members.objects.get(id=id)
  member.delete()
  return HttpResponseRedirect(reverse('index'))
#######################################################################################################
def update(request, id): #انت تريد هذه الدالة التي تستلم الطلب  و يحتوي على البيانات الجديدة مع اي دي  
  mymember = Members.objects.get(id=id) # هنا سوف نسترجع العنصر المطلوب من قاعدة البيانات على حسب اي دي
  template = loader.get_template('update.html') # وهنا سيتم عرض صفحة التعديل
  context = {
    'mymember': mymember,
  } 
  return HttpResponse(template.render(context, request)) # ستم تحويل البيانات العنصر لصفحة الجديدة
#######################################################################################################

و هذه هي صفحة التعديل: 
members/templates/update.html

<h1>Update member</h1>

<form action="updaterecord/{{ mymember.id }}" method="post">
{% csrf_token %}
First Name:<br>
<input name="first" value="{{ mymember.firstname }}">
<br><br>
Last Name:<br>
<input name="last" value="{{ mymember.lastname }}">
<br><br>
<input type="submit" value="Submit">
</form>

الأن مع members/urls.py:

from django.urls import path

from . import views

urlpatterns = [
  path('', views.index, name='index'),
  path('add/', views.add, name='add'),
  path('add/addrecord/', views.addrecord, name='addrecord'),
  path('delete/<int:id>', views.delete, name='delete'),
  path('update/<int:id>', views.update, name='update'), # يمكنك ملاحظة انه سبتم استخدام هذا الرابط لعملية التعديل
		^^^^^^^^^^^^^^									
  #وكما أسلفت يشترط ارسال اي دي العنصر المراد تعديل عليها
]

سنقوم الأن بعرض دالة التعديل updaterecord بعد إرسال التعديلات من فورم التعديلات:  members/templates/update.html ستستقبل الدالة البيانات.
في ملف members/views.py:

def updaterecord(request, id):
  first = request.POST['first'] # استقبال البيانات الجديدة حسب إسمها في الفورم
  last = request.POST['last']
  member = Members.objects.get(id=id) # جلب العنصر المراد تعديله من قاعدة البيانات
  member.firstname = first # التعديل 
  member.lastname = last
  member.save() # حفظ لتعديلات
  return HttpResponseRedirect(reverse('index')) # الرجوع لصفحة الرئيسية
 
تم التعديل في بواسطة محمد حجي2

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...