مسؤول Django: كيف يمكنني إضافة حقل نموذج غير ذي صلة إلى صفحة تغيير/إضافة نموذج؟
-
27-09-2019 - |
سؤال
لدي النماذج التالية:
class Foo(models.Model):
field1 = models.IntegerField()
...
class Bar(models.Model):
field1 = models.IntegerField()
...
class Foo_bar(models.Model):
foo = models.ForeignKey(Foo)
bar = models.ForeignKey(Bar)
...
في المسؤول ، أريد ذلك حتى في صفحة تغيير/إضافة FOO ، يمكنك تحديد كائن شريط ، وعلى حفظ ، أريد إنشاء كائن FOO_BAR لتمثيل العلاقة. كيف يمكنني القيام بذلك من خلال تخصيص موقع المسؤول/modeladmins؟ لاحظ أن الإضافية ليست ما أحتاجه تمامًا لأنه لا توجد علاقة مفتاح خارجي صريح بين Foo و Bar. وثانياً ، لا أريد فعلاً تحرير الكائنات الشريطية ، أريد فقط الاختيار من بينها من بين تلك الموجودة في النظام.
شكرًا.
المحلول
هل أنت متأكد أنك لا تريد فقط Manytomanyfield؟ في المسؤول ، من شأن هذا أن يظهر كقائمة متعددة الاختيار من Bar
أشياء. انظر إلى جزء اختيار المجموعة من المسؤول User
.
إذا كنت بحاجة إلى بيانات إضافية متصلة بالعلاقة ، فيمكنك إستخدم through
معامل:
class Foo(models.Model):
field1 = models.IntegerField()
bars = models.ManyToManyField("Bar", related_name="foos", through="Foo_bar")
ستحتاج إلى إضافة FOO_BAR إلى المسؤول لتحرير هذه المعلمات الإضافية في المسؤول.
نصائح أخرى
أستطيع أن أفكر في احتمالين:
يمكنك إنشاء نموذج مخصص لك
Foo
نموذج وإضافة حقل يحتوي علىBar.objects.all()
QuerySet لذلك. ثم تجاوز التخلف عن السدادsave_form()
طريقة لإنشاء جديدBar
مثيل عند حفظ الكائن.يمكنك إنشاء فئة حقل مخصصة وإضافتها إليك
Foo
النموذج ، والفئة هذه الوظيفة من خلال إشارة ´post_save` ...