【发布时间】:2023-03-22 16:38:01
【问题描述】:
我有两个模型:
class Actor(models.Model):
name = models.CharField(max_length=30, unique = True)
event = models.ManyToManyField(Event, blank=True, null=True)
class Event(models.Model):
name = models.CharField(max_length=30, unique = True)
long_description = models.TextField(blank=True, null=True)
我想创建一个表单,让我在添加新条目时能够识别两个模型之间的链接。这有效:
class ActorForm(forms.ModelForm):
class Meta:
model = Actor
表单包括名称和事件,允许我创建一个新的 Actor 并将其同时链接到现有的事件。
另一方面,
class EventForm(forms.ModelForm):
class Meta:
model = Event
此表单不包含参与者关联。所以我只能创建一个新事件。我不能同时将它链接到现有的 Actor。
我尝试创建一个内联表单集:
EventFormSet = forms.models.inlineformset_factory(Event,
Actor,
can_delete = False,
extra = 2,
form = ActorForm)
但我得到一个错误
<'class ctg.dtb.models.Actor'> has no ForeignKey to <'class ctg.dtb.models.Event'>
这并不奇怪。 inlineformset 适用于我拥有的另一组模型,但这是一个不同的示例。我想我完全错了。
总体问题:如何创建允许我创建新事件并将其链接到现有 Actor 的表单?
【问题讨论】:
-
一个
Event中涉及多少个Actor?根据我的感觉,我首先会创建一个从Event到Actor的外键。 -
我理解你的意思,但我认为多对多是正确的。多个演员可以参加一个活动,一个演员可以参加多个活动。
标签: django forms many-to-many inline