سؤال

لقد قمت بإنشاء فئتين جديدتين يرثون إدخال النموذج:

class Entry(models.Model):
    LANGUAGE_CHOICES = settings.LANGUAGES

    language = models.CharField(max_length=2, verbose_name=_('Comment language'), choices=LANGUAGE_CHOICES)
    user = models.ForeignKey(User)
    country = models.ForeignKey(Country, null=True, blank=True)

    created = models.DateTimeField(auto_now=True)

class Comment(Entry):
    comment = models.CharField(max_length=2000, blank=True, verbose_name=_('Comment in English'))

class Discount(Entry):
    discount = models.CharField(max_length=2000, blank=True, verbose_name=_('Comment in English'))
    coupon = models.CharField(max_length=2000, blank=True, verbose_name=_('Coupon code if needed'))

بعد إضافة هذه النماذج الجديدة إلى المسؤول عبر admin.site.register ، أحصل على ValueRror عند محاولة إنشاء تعليق أو خصم عبر المسؤول. إضافة الإدخالات تعمل بشكل جيد.

خطأ MSG:

valueRror AT/admin/reviews/discount/add/لا يمكن تعيين "'':" Discount.discount "يجب أن يكون مثيل" خصم ". طريقة الطلب: احصل على url ust request: http://127.0.0.1:8000/admin/reviews/discount/add/نوع الاستثناء: قيمة الاستثناء القيمة:
لا يمكن تعيين "" ":" Discount.discount "يجب أن يكون مثيل" خصم ". موقع الاستثناء: /library/python/2.6/site-packages/django/db/models/fields/reled.py في جلس, ، السطر 211 Python قابلة للتنفيذ:/usr/bin/python python الإصدار: 2.6.1

هل كانت مفيدة؟

المحلول

كان سبب هذا الخطأ هو أنني استخدمت نفس اسم العمود الذي تم استخدامه بالفعل باسم النموذج. ساهمت كارين ت. في الإجابة التالية في قائمة البريد Django:

يبدو أن المشكلة هي أنك قمت بتسمية حقل في نموذج التعليق الخاص بك بنفس الاسم ، فقط الحالة الأدنى. يوضح التعليق من الدخول ، باستخدام تعدد الطاولة. هذا يضيف حقل OneToOny في التعليق مرة أخرى إلى الدخول ، والذي يحتوي على تأثير جانبي لإضافة سمة "تعليق" إلى الإدخال. هذه هي السمة التي تتيح لك الوصول إلى التعليق المرتبط بالإدخال كنتيجة لحقل OnetOone في التعليق ، وإق

تحدث المشكلة بعد ذلك عندما يكون نموذج التعليق "يرث" جميع الحقول/سمات الإدخال: السمة الموروثة "من الإدخال على ما يبدو يركض على حقل التعليق المحدد. 1.0. لم أجري أي بحث لمعرفة ما إذا كان قد تم الإبلاغ عنه.

بصفتك حلًا ، يمكنك تسمية حقولك شيئًا آخر غير اسم النموذج ، أو يمكنك تحديد حقل OneToOnefield بشكل صريح في نماذج الطفل ، وتحديد Parent_Link = True وشيء آخر غير اسم النموذج بالكامل لـ Relation_Name.

نصائح أخرى

يقول Hunch أنه يمكنك القيام بإعلان فئة الدخول الخاصة بك باعتبارها مجردة ما لم تكن بحاجة إلى إدخال ككائن فعلي أيضًا

...rest of Entry model here...
created = models.DateTimeField(auto_now_add=True) ## ONLY set date when created, not every save

class Meta:
   abstract = True

...methods for your model etc...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top