我找到了一种方法来创建作为Foreignkey相互连接的模型。
我正在寻找一个表单集,它将创建一个相互之间具有M2M关系的动态表单,因此以下设计:
class PrescriptionLine(models.Model):
id = models.AutoField(primary_key=True)
drug = models.ForeignKey(Drug, on_delete=models.CASCADE)
morning = models.FloatField(choices=[(val, val) for val in TABLET_INTAKE_QTY], default=0, blank=True, null=True)
class Prescription(models.Model):
id = models.AutoField(primary_key=True)
patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
line_prescription = models.ManyToManyField(PrescriptionLine, on_delete=models.CASCADE)
note = models.TextField(max_length=100, default='')
现在我可以做这样的事情:
PrescriptionFormset = inlineformset_factory(
Prescription, PrescriptionLine, form=PrescriptionForm,
fields=['drug', 'morning'], extra=1, can_delete=True
)
但我不能这么做,因为它说处方线没有处方的ForeignKey。
如何做到这一点?请帮帮我,我已经挣扎了好几个月了。表单集本身已经准备好了,如果需要的话,我可以在这里添加它吗?
所以解决方案实际上非常简单。到目前为止,我还没有完成(意味着更新还没有经过测试(,这是有效的:
SinglePrescriptionFormset = modelformset_factory(
PrescriptionLine, form=PrescriptionLineForm, fields='__all__', extra=1, can_delete=True
)
上面的错误中有一个错误,请注意:
line_prescription = models.ManyToManyField(PrescriptionLine)
它以这种方式工作,不需要更改任何其他内容。