【问题标题】:Select ForeignKey field in form ChoiceField在表单 ChoiceField 中选择 ForeignKey 字段
【发布时间】:2010-12-13 01:35:44
【问题描述】:

我的模型中有外键条目,我想将其用于我的选择字段......现在我不太确定如何去做......我的模型文件可以找到here 基本上我想要对车辆制造商、型号、年份、车身样式、外观颜色和传动系统进行选择。由于它们都以相同的方式工作,我只需要有人为我指明正确的方向,然后我就准备好了。

class Model(models.Model):
   model = models.CharField(max_length=15, blank=False)
   manufacturer = models.ForeignKey(Manufacturer)
   date_added = models.DateField()
   def __unicode__(self):
       name = ''+str(self.manufacturer)+" "+str(self.model)
       return name 

class BodyStyle(models.Model):
   doors = models.PositiveSmallIntegerField()
   passengers = models.PositiveSmallIntegerField()
   style = models.CharField(max_length=15, blank=False)
   def __unicode__(self):
       name = str(self.doors)+" Door / "+str(self.passengers)+" Passenger / "+str(self.style)
       return name 

【问题讨论】:

    标签: django forms


    【解决方案1】:

    也许您正在寻找ModelChoiceField?

    要使用它,您可以编写如下内容:

    class VehicleForm(forms.Form):
       series = ModelChoiceField(queryset=Series.objects.all()) # Or whatever query you'd like
    

    然后对其他字段执行相同操作。

    当然,您可能会使用 ModelForm,但这只是一个示例。这就是你要找的吗?

    【讨论】:

    • 我认为这是我想要的更多......让我在几分钟内尝试一下,然后看看它是否有效。
    • 它工作正常 :) 只是一个问题...车身风格和模型模型不只返回模型名称,例如我的模型 unicode 中的 MDX ......它提供了品牌加模型,所以这就是我在我的表单中得到的,但我只想要模型。样式相同...请参阅上面的模型定义编辑
    • 我不确定我是否完全理解你在说什么(我病了,所以我的看法不对.. :))但我认为你想要的是使用label_from_instance 它允许您可以修改字段的输出。如果你用谷歌搜索,你应该会找到一些例子。
    • thnx Bartek...得到了 label_from_instance 解决方案 :)
    • 还有一个问题...我可以让下拉菜单仅填充现有记录吗?我可能有讴歌、本田和日产,但如果只有前两个有与之相关的记录,那么我将只使用讴歌和本田进行选择......这可能吗
    猜你喜欢
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    相关资源
    最近更新 更多