如何使用 3 种不同的模型作为表单字段在 Django 中制作表单?
这些是我的模型:
class User(models.Model):
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=50)
city = models.CharField(max_length=50)
class Team(models.Model):
team_name = models.CharField(max_length=250)
city = models.CharField(max_length=50)
class GameCategories(models.Model):
CATEGORIES = (
('Senior', 'Senior'),
('Middle', 'Middle'),
('Junior', 'Junior'),
)
category = models.CharField(max_length=16, choices=CATEGORIES)
我想使用<select><option></option></select>
创建一个表单上面的模型看起来像这样:
<select class="form-control">
<option value=""></option>
<option value="user.id">user.first_name + user.last_name</option>
<option value="user.id">user.first_name + user.last_name</option>
<option value="user.id">user.first_name + user.last_name</option>
</select>
<select class="form-control">
<option value=""></option>
<option value="gamecat.id">gamecat.category</option>
<option value="gamecat.id">gamecat.category</option>
<option value="gamecat.id">gamecat.category</option>
</select>
<select class="form-control">
<option value=""></option>
<option value="team.id">team.team_name</option>
<option value="team.id">team.team_name</option>
<option value="team.id">team.team_name</option>
</select>
填写表单后,当用户单击提交按钮时,我想将所有值(用户 ID、游戏类别 ID、团队 ID)发送给另一个 View 。
实际上我不知道该怎么做。我想我应该创建一个 ModelForm
。
你能帮我一下吗?
最佳答案
使用 django 表单 ModelChoiceField
from django import forms
from .models import GameCategories, User, Team
class CustomForm(forms.Form):
'''Form with User, Team and GameCategories'''
user = forms.ModelChoiceField(queryset=User.objects.all())
team = forms.ModelChoiceField(queryset=Team.objects.all())
game_category = forms.ModelChoiceField(
queryset=GameCategories.objects.all()
)
请记住,如果您希望特定用户的选择持续存在,您应该使用ModelForm
。如果您只是将其存储以供下一个请求或存储在 cookie 中,那么此解决方案将起作用。
另一个需要注意的是__str__()
方法被用作选项的标签。
关于python - 如何使用来自不同模型的选择字段创建自定义 Django 表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48140291/