Django InlineFormset with M2M Field



我找到了一种方法来创建作为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)

它以这种方式工作,不需要更改任何其他内容。