python - 如何使用来自不同模型的选择字段创建自定义 Django 表单?

标签 python django forms

如何使用 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/

相关文章:

python - Django操作错误: no such column

python - 使用没有表单的 View 创建 Django 对象

python - Django 用户创建表单

python - 在具有现有值的现有数据库表中添加新的唯一字段 - Django1.7/MySql

python - 有没有办法减少小批量 kmeans 的内存使用?

C# 在 <form runat ="server"> </form> 中有多个客户端表单?

Flutter:FormFields 的良好实践。我是否为每种类型的字段创建一个小部件?

javascript - 如何使用 Jquery 检查 2 Contact Form 7 复选框输入是否已选中?

python - 使用 Python 显示同步的 NTP 对等服务器源

django - “select_for_update” 在原子 block 内调用仍然 TransactionManagementError