首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在相关模型上创建多个select (在CreateView上)到一个外键?

在相关模型上创建多个select (在CreateView上)到一个外键的方法有以下几种:

  1. 使用ModelForm:在CreateView中使用ModelForm来生成表单,通过为每个外键字段创建一个选择框(select)来选择相关的模型对象。首先,在表单类中定义外键字段为选择框类型,并设置queryset属性为相关模型的所有对象。然后,在CreateView中指定form_class为自定义的表单类。
代码语言:txt
复制
from django import forms
from django.views.generic.edit import CreateView
from .models import Model1, Model2

class MyForm(forms.ModelForm):
    class Meta:
        model = Model1
        fields = '__all__'

    model2_1 = forms.ModelChoiceField(queryset=Model2.objects.all(), label='Model2 1')
    model2_2 = forms.ModelChoiceField(queryset=Model2.objects.all(), label='Model2 2')

class MyCreateView(CreateView):
    model = Model1
    form_class = MyForm
    template_name = 'my_template.html'
    success_url = '/success/'

    def form_valid(self, form):
        # 处理表单提交
        return super().form_valid(form)
  1. 重写get_context_data方法:在CreateView中重写get_context_data方法,将需要选择的相关模型对象传递给模板,然后在模板中使用选择框(select)来选择相关模型对象。首先,在CreateView中重写get_context_data方法,在该方法中获取相关模型的所有对象,并将它们作为上下文数据传递给模板。然后,在模板中使用选择框(select)来选择相关模型对象。
代码语言:txt
复制
from django.views.generic.edit import CreateView
from .models import Model1, Model2

class MyCreateView(CreateView):
    model = Model1
    fields = '__all__'
    template_name = 'my_template.html'
    success_url = '/success/'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['model2_objects'] = Model2.objects.all()
        return context
代码语言:txt
复制
<!-- my_template.html -->
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <label for="id_model2_1">Model2 1:</label>
  <select id="id_model2_1" name="model2_1">
    {% for model2_obj in model2_objects %}
      <option value="{{ model2_obj.pk }}">{{ model2_obj }}</option>
    {% endfor %}
  </select>
  <label for="id_model2_2">Model2 2:</label>
  <select id="id_model2_2" name="model2_2">
    {% for model2_obj in model2_objects %}
      <option value="{{ model2_obj.pk }}">{{ model2_obj }}</option>
    {% endfor %}
  </select>
  <button type="submit">Submit</button>
</form>

以上两种方法可以根据具体情况选择适合的方式来实现在相关模型上创建多个选择框(select)到一个外键。根据需求和场景的不同,选择相应的方法进行实现。对应的腾讯云产品可以参考腾讯云的云服务器CVM(https://cloud.tencent.com/product/cvm)、弹性伸缩Auto Scaling(https://cloud.tencent.com/product/as)、云数据库MySQL(https://cloud.tencent.com/product/cdb_mysql)、对象存储COS(https://cloud.tencent.com/product/cos)等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券