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

لايتم تصدير البيانات الى قاعدة البيانات ضمن مشروع دجانغو

Zeina Almakdisi

السؤال

مرحبا

لدي فورم تسجيل لاتظهر أي رسالة خطأ ولكن لايتم تصدير البيانات الى قاعدة البيانات 

###لايوجد مشكلة في الاتصال مع القاعدة

##models.py
class Hospital(Center):
  user = models.OneToOneField(User , verbose_name=_("user"), on_delete=models.CASCADE)
  slug = models.SlugField(_("slug"),blank=True,null=True  )
  
  class Meta:
    verbose_name = _("Hospital")
    verbose_name_plural= _("Hospital")

  def __str__(self):
        return str(self.user)




##forms.py
class NewHospitalForm(forms.ModelForm):      
   class Meta:
        model = Hospital 
        fields = ('user','name','address','address_detials',
        'number_phone','who_I','image','Specialization',
        'facebook','twitter','google')

##views.py
def form_hospital(request):
    if request.method == "POST":
        form_hospital = NewHospitalForm(request.POST, request.FILES)
        if form_hospital.is_valid():
          form_hospital.save(commit=False)
          form_hospital.user=request.user
          form_hospital.save()
          messages.success(request, ('Your websit was successfully added!'))
        else:
          	HttpResponse(request, 'Error saving form')
        return redirect("accounts:doctor")
    form_hospital = NewHospitalForm()
    add = Hospital.objects.all()
    return render(request, 'user/form_hospital.html', context={'form_hospital':form_hospital, 'add':add})


##html
    <div class="container">
        <form method="post" enctype="multipart/form-data">
            {% csrf_token %}
            {{form_hospital}}
            <button class="btn btn-primary my-4" type="submit">Submit</button>
        </form>
       
    </div>

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0
بتاريخ 10 دقائق مضت قال Zeina Makdisi:

مرحبا

لدي فورم تسجيل لاتظهر أي رسالة خطأ ولكن لايتم تصدير البيانات الى قاعدة البيانات 

###لايوجد مشكلة في الاتصال مع القاعدة

مرحبا زينة،

هل تظهر أي أخطار في ال Terminal؟

الشيفرة التي قمت بإرفاقها عليها بعض الملاحظات:

1 - في الفورم قمت بإضافة مجموعة من الحقول لا تتواجد في النموذج Hospital.

2 - في دالة العرض قمت باستعمال الصنف HttpResponse بشكل خاطئ.

بالتوفيق.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

لاتظهر أي رسالة خطأ في Terminal

 

النموذج Hospital يرث الحقول الاضافية الموجودة في الفورم من كلاس Center

تم التعديل في بواسطة Zeina Makdisi
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 15 دقائق مضت قال Zeina Makdisi:

لاتظهر أي رسالة خطأ في Terminal

 

النموذج Hospital يرث الحقول الاضافية الموجودة في الفورم من كلاس Center

لنعمل أولا على تحسين شكل الشيفرة: 

##views.py
def form_hospital(request):
    if request.method == "POST":
        form_hospital = NewHospitalForm(request.POST, request.FILES)
        if form_hospital.is_valid():
            form_hospital.save(commit=False)
            form_hospital.user=request.user
            form_hospital.save()
            messages.success(request, ('Your websit was successfully added!'))
            return redirect("accounts:doctor") # نقوم بتحويل العميل إلى هذه الصفحة بعد حفظ المعلومات
        else:
            messages.error(request, ('Error saving form.')) # نقوم بإرسال رسالة خطأ حفظ النموذج الى العميل
    else: # اذا كانت طريقة الطلب عبارة عن GET
        form_hospital = NewHospitalForm()
    add = Hospital.objects.all()
    return render(request, 'user/form_hospital.html', context={'form_hospital':form_hospital, 'add':add})

لإظهار الأخطاء في القالب نقوم بإضافة:

##html
    <div class="container">
        <!-- في حالة الخطأ سوف تظهر الأخطاء -->
      	{% if form.errors %}
        <div class="alert alert-danger">
            {{ form.errors }}
        </div>
       {% endif %}
        <form method="post" enctype="multipart/form-data">
            {% csrf_token %}
            {{form_hospital}}
            <button class="btn btn-primary my-4" type="submit">Submit</button>
        </form>
       
    </div>

بالتوفيق.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

لنعمل أولا على تحسين شكل الشيفرة: 


##views.py
def form_hospital(request):
    if request.method == "POST":
        form_hospital = NewHospitalForm(request.POST, request.FILES)
        if form_hospital.is_valid():
            form_hospital.save(commit=False)
            form_hospital.user=request.user
            form_hospital.save()
            messages.success(request, ('Your websit was successfully added!'))
            return redirect("accounts:doctor") # نقوم بتحويل العميل إلى هذه الصفحة بعد حفظ المعلومات
        else:
            messages.error(request, ('Error saving form.')) # نقوم بإرسال رسالة خطأ حفظ النموذج الى العميل
    else: # اذا كانت طريقة الطلب عبارة عن GET
        form_hospital = NewHospitalForm()
    add = Hospital.objects.all()
    return render(request, 'user/form_hospital.html', context={'form_hospital':form_hospital, 'add':add})

لإظهار الأخطاء في القالب نقوم بإضافة:


##html
    <div class="container">
        <!-- في حالة الخطأ سوف تظهر الأخطاء -->
      	{% if form.errors %}
        <div class="alert alert-danger">
            {{ form.errors }}
        </div>
       {% endif %}
        <form method="post" enctype="multipart/form-data">
            {% csrf_token %}
            {{form_hospital}}
            <button class="btn btn-primary my-4" type="submit">Submit</button>
        </form>
       
    </div>

بالتوفيق.

شكرا لك 

بعد التعديل اصبح يظهر هذا الخطأ في صفحة الادمن 

 

11111111.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 7 ساعات قال Zeina Makdisi:

شكرا لك 

بعد التعديل اصبح يظهر هذا الخطأ في صفحة الادمن 

قمنا بعمل بعض الأخطاء في الشيفرة السابقة يجب علينا إصلاحها. في ملف القالب قمنا بإضافة:

{% if form.errors %}
<div class="alert alert-danger">
  {{ form.errors }}
</div>
{% endif %}

والخطأ يكمن في اسم المتغير form والذي يجب أن يكون form_hospital

{% if form_hospital.errors %}
<div class="alert alert-danger">
  {{ form_hospital.errors }}
</div>
{% endif %}

أما سبب ظهور الأخطاء في صفحة الأدمن فهذا راجع لشمولية عمل الرسائل في دجانغو فعند إضافتنا ل

messages.error(request, ('Error saving form.'))

دجانغو سوف يقوم بحفظ هذه الرسالة واظهارها للعميل عند توفر شيفرة العرض الخاصة بالرسائل وبطبيعة الحال لم نقم بإضافة هذه الشيفرة في القالب الخاص بنا، لإضافتها نقوم ب:

{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li  {% if message.tags %} class=" {{ message.tags }} " {% endif %}> {{ message }} </li>
    {% endfor %}
</ul>
{% endif %}

شيفرة القالب تصبح على الشكل:

##html
<div class="container">
  {% if messages %}
  <ul class="messages">
      {% for message in messages %}
      <li  {% if message.tags %} class=" {{ message.tags }} " {% endif %}> {{ message }} </li>
      {% endfor %}
  </ul>
  {% endif %}
  
  <!-- في حالة الخطأ سوف تظهر الأخطاء -->
  {% if form_hospital.errors %}
  <div class="alert alert-danger">
    {{ form_hospital.errors }}
  </div>
  {% endif %}
  <form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{form_hospital}}
    <button class="btn btn-primary my-4" type="submit">Submit</button>
  </form>

</div>

بالتوفيق.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

المهندس مسعود كفى ووفى بارك الله بعلمك

 

اعتقد الخطأ بالمودل.

class Hospital(Center):
  user = models.OneToOneField(User , verbose_name=_("user"), on_delete=models.CASCADE)
  slug = models.SlugField(_("slug"),blank=True,null=True  )
  
  class Meta:
    verbose_name = _("Hospital")
    verbose_name_plural= _("Hospital")

  def __str__(self):
        return str(self.user)
# فقط فيلد اليوزر والسلق للمستشفى بالمودل

لكن لما نروح نشوف الفورم

class NewHospitalForm(forms.ModelForm):      
   class Meta:
        model = Hospital 
        fields = ('user','name','address','address_detials',
        'number_phone','who_I','image','Specialization',
        'facebook','twitter','google')

"""
تم استدعاء الكثير من الفيلدات الغير موجودة اساساً بالمودل!
بمعنى ان جانغو يحاول ان يحفظ المعلومات لكن لايوجد اي فيلد لها بقاعدة البيانات.

الحل تعديل المودل بما يتناسب مع الفيلدات المرغوبة او المكتوبة بالفورم. ثم عمل ميجريشن للمودل، ثم التجربة من جديد
"""

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...