2

我有一个名为 Order 的模型,其中包含一个名为 start 的日期时间字段。我可以从该字段读取和写入该字段没有问题。

但是,我刚刚创建了一个 ModelForm 并将 start 指定为 Meta 中的字段之一 =() ,我得到:

Unknown field(s) (start) specified for Order

通过复制和粘贴字段名称,我确保它不是拼写错误。如果我删除该字段,它会起作用。

这是确切的 ModelForm

class OrderForm(ModelForm):
    class Meta:
        model = Order
        fields = ('details', 'start', 'quantity', 'total')

编辑添加了更多细节:

我尝试使用 exclude = () 来排除除我需要的字段之外的所有字段,并且即使我不排除它,也不会出现在表单中。

这是模型:

class Order(MyModel):
    user = models.ForeignKey(User, )
    invoice = models.ForeignKey(Invoice, )
    unit_price = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True, )
    subtotal = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null    =True, )
    tax = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True, )
    misc = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True, )
    total = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True, )
    start = models.DateTimeField(auto_now_add=True, blank=True, null=True, )
    end = models.DateTimeField(editable=True, blank=True, null=True, )
    duration = models.PositiveSmallIntegerField(blank=True, null=True, )
    quantity = models.PositiveSmallIntegerField(blank=True, null=True, )
    notes = models.CharField(max_length=256, blank=True, null=True, )
    details = models.CharField(max_length=64, blank=True, null=True, )
    configured = models.BooleanField(default=False, )
4

3 回答 3

2

消除:

auto_now_add=True

型号字段参考 | Django 文档 | 姜戈

按照目前的实现,将 auto_now 或 auto_now_add 设置为 True 将导致该字段设置为 editable=False 和 blank=True。

于 2012-09-27T17:42:35.020 回答
1

我删除了 auto_now_add=True 并且问题解决了。

感谢大家的帮助。

于 2012-09-27T17:30:49.193 回答
0

也许你已经editable=False为这个领域定义了start

根据文档:

如果False是,该字段将不会显示在 admin 或任何其他ModelForm中。默认为True

于 2012-09-27T16:46:16.510 回答