Как заставить Django admin.TabularInline НЕ требовать некоторые элементы - PullRequest
0 голосов
/ 09 сентября 2009
class LineItemInline(admin.TabularInline):
    model = LineItem
    extra = 10

class InvoiceAdmin(admin.ModelAdmin):
    model = Invoice
    inlines = (LineItemInline,)

и

class LineItem(models.Model):
    invoice = models.ForeignKey(Invoice)
    item_product_code = models.CharField(max_length=32)
    item_description = models.CharField(max_length=64)
    item_commodity_code = models.ForeignKey(CommodityCode)
    item_unit_cost = models.IntegerField()
    item_unit_of_measure = models.ForeignKey(UnitOfMeasure, default=0)
    item_quantity = models.IntegerField()
    item_total_cost = models.IntegerField()
    item_vat_amount = models.IntegerField(default=0)
    item_vat_rate = models.IntegerField(default=0)

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

Ответы [ 2 ]

1 голос
/ 09 сентября 2009

Странно, но этого делать не нужно - не требуется никаких данных подряд, если вы ничего не ввели.

Интересно, не запутали ли опции default. Опять же, Джанго должен справиться с этим, но попробуйте удалить их и посмотреть, что произойдет.

Также обратите внимание, что это:

item_unit_of_measure = models.ForeignKey(UnitOfMeasure, default=0)

недопустимо, поскольку 0 не может быть идентификатором объекта UnitOfMeasure. Если вы хотите, чтобы FK не требовались, используйте null=True, blank=True в объявлении поля.

0 голосов
/ 10 сентября 2009

Оказывается, проблема в значениях по умолчанию. Тем не менее, упомянутое выше о UnitOfMeasure не является реальной проблемой, поскольку любое поле со значением по умолчанию = требует наличия остальных данных. Мне это кажется ошибкой, поскольку значение по умолчанию должно быть вычтено при определении, есть ли в записи что-либо, что требует сохранения, но когда я удаляю все значения по умолчанию, это работает.

В этом коде item_unit_of_measure = models.ForeignKey (UnitOfMeasure, по умолчанию = 0) это был хитрый способ присвоения 0-й записи в базе данных значения по умолчанию. К сожалению, это не работает, как он указал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...