Python 一种形式的多个模型
我想在一种形式中使用两个模型。模型有多对多的关系,最好的解决方案是什么?我尝试了formset,但我只看到了一个模型的字段,而不是两个 我的模型:Python 一种形式的多个模型,python,django,forms,model,Python,Django,Forms,Model,我想在一种形式中使用两个模型。模型有多对多的关系,最好的解决方案是什么?我尝试了formset,但我只看到了一个模型的字段,而不是两个 我的模型: class Event(models.Model): title = models.CharField(max_length=100) description = models.TextField(max_length=400) location = models.CharField(max_length=100) clas
class Event(models.Model):
title = models.CharField(max_length=100)
description = models.TextField(max_length=400)
location = models.CharField(max_length=100)
class EventTime(models.Model):
start_time = models.DateTimeField()
event = models.ManyToManyField(Event)
为每个表单定义一个模型表单
class EventForm(forms.ModelForm):
class Meta:
fields = ('title', 'description', 'location')
class EventTimeForm(forms.ModelForm):
class Meta:
fields = ('start_time',)
请注意,事件
字段已被忽略,因为我们希望将事件时间对象链接到我们正在创建的新事件
在您的视图中,您需要将这两个表单传递到模板上下文。在使用多个表单时,使用前缀是一个好主意,它可以防止字段名在请求中发生冲突
event_form = EventForm(prefix="event")
event_time_form = EventTimeForm(prefix="eventtime")
在模板中,可以在同一个表单标记中包含多个表单
<form method="post">
{{ event_form }}
{{ event_time_form }}
</form>
为每个表单定义一个模型表单
class EventForm(forms.ModelForm):
class Meta:
fields = ('title', 'description', 'location')
class EventTimeForm(forms.ModelForm):
class Meta:
fields = ('start_time',)
请注意,事件
字段已被忽略,因为我们希望将事件时间对象链接到我们正在创建的新事件
在您的视图中,您需要将这两个表单传递到模板上下文。在使用多个表单时,使用前缀是一个好主意,它可以防止字段名在请求中发生冲突
event_form = EventForm(prefix="event")
event_time_form = EventTimeForm(prefix="eventtime")
在模板中,可以在同一个表单标记中包含多个表单
<form method="post">
{{ event_form }}
{{ event_time_form }}
</form>
前缀很好,但有一个陷阱:如果您想在表单有效时访问字段值,请从名称字段中删除前缀;例如,if event\u form.is\u valid():title=event\u form.cleaned\u data['title']
前缀非常好,但有一个陷阱:如果您想在表单有效时访问字段值,请从name字段中删除前缀;例如,if event\u form.is\u valid():title=event\u form.cleaned\u data['title']