我认为我需要做的实际上与内联表单集相反。
假设我有:
from django.db import models
class Type(models.Model):
description = models.CharField(max_length=50)
status = models.ForeignKey(Status)
def __unicode__(self):
return self.description
class ColorType(models.Model):
type = models.ForeignKey(Type)
color = models.ForeignKey('Color')
status = models.ForeignKey(Status)
def __unicode__(self):
return u'%s %s' % (self.type, self.color)
class Color(models.Model):
description = models.CharField(max_length=50)
status = models.ForeignKey(Status)
types = models.ManyToManyField(type, through=ColorType)
def __unicode__(self):
return self.description
class Chair(models.Model):
description = models.CharField(max_length=50)
status = models.ForeignKey(Status)
colorType = models.ForeignKey(ColorType)
现在我需要一个表单来编辑椅子,在其中分别输入颜色和类型(就像显示 ColorType 的模型表单集)。如果组合不存在,应用程序必须创建必要的 ColorType 实例(并为其分配默认状态)并将其分配给椅子。
我认为整个情况很常见,我应该遗漏了一些东西......
最佳答案
我进行了搜索,遗憾的是,目前仅使用 Django 每个表单不可能有多个模型。话虽如此,您并不是唯一一个想这样做的人。
- 有一个答案 here提出了很好的建议。
- 如果您仍然想要这样做,您可以使用 something like this 自行推出,但有点不同,因为这个版本接受一种形式或另一种形式,而不是同时接受两种形式。
- 如果您不想自己编写代码,django-multiform是一个 Django 库,它提供了一种通用的方法来完成您想要的操作。当然,您需要更改
save
方法以应用您的用例(ColorType 组合等)
关于Django 以一种形式编辑模型对象和引用对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21783925/