Как отобразить промежуточные поля для моделей M2M в интерфейсе администратора? - PullRequest
0 голосов
/ 17 августа 2011

У меня есть следующий файл model.py, в котором модель Charges содержит фермы полей M2M с промежуточной моделью Членство .

class Farm(models.Model):
    farmNo = models.CharField(max_length=100)
    size = models.CharField(max_length=50)
    description = models.TextField()

class Charges(models.Model):
    chargeDescription = models.TextField(verbose_name="Description")
    chargeType = models.CharField(max_length=10,choices=CHARGE_TYPE)
    farms = models.ManyToManyField(Farm,through='Membership')

    class Meta:
        verbose_name_plural = "Charges"

class Membership(models.Model):
    farm = models.ForeignKey(Farm)
    charges = models.ForeignKey(Charges)
    paymentDate = models.DateField()
    paymentStatus = models.BooleanField(default=False)

Моя проблема заключается в том, что при создании нового объекта с использованиемПоле администратора django для модели сбора "фермы" Поле M2mM не отображается, и поэтому я не могу назначить сборы для ферм.обвинение.

Я попытался переопределить метод def formfield_for_manytomany(self, db_field, request=None, **kwargs):, из-за которого виджет не отображается на экране, но по-прежнему не отображается на экране.

Пожалуйста, помогите Спасибо

1 Ответ

1 голос
/ 17 августа 2011

Этого не произойдет, потому что он не может добавить ферму без сбора дополнительных данных о членстве.Вы должны использовать встроенные функции, но даже в этом случае вам необходимо встроенное членство, а не ферма.

class MembershipInlineAdmin(admin.TabularInline):
    class Meta:
        model = Membership
        extra = 1

class ChargesAdmin(admin.ModelAdmin):
    inlines = [
        MembershipInlineAdmin,
    ]

admin.site.register(Charges, ChargesAdmin)

Затем вы можете выбрать существующую ферму или создать новую ферму обычным способом для каждого добавляемого вами членства.

...