2014-09-24 34 views
0

它可能创建类Task()开发人员字段这是一个外键下拉?什么是创建它的最佳方式?可以为外键创建下拉菜单吗?

开发商从django.db进口车型

class Developer(models.Model): 
    name = models.CharField(max_length=21, null=False, blank=False) 
    created = models.DateTimeField(auto_now_add=True) 

    def __unicode__(self): 
     return str(self.name) 

models.py

from django.db import models 

from developers.models import Developer 

class Task(models.Model): 
    story = models.ForeignKey(Story) 
    developer = models.ForeignKey(Developer) 
    description = models.CharField(max_length=360) 
    iteration = models.IntegerField() 
    created = models.DateTimeField(auto_now_add=True, auto_now=False) 

forms.py

class AddTask(forms.ModelForm): 
    story = forms.ForeignKey(Story) 
    developer = forms.ForeignKey(Developer) 
    description = forms.CharField(max_length=360) 
    iteration = forms.IntegerField() 

    class Meta: 
     fields = ["name", "developer", "description", "iteration"] 
     model = Task 
+0

added my forms.py – django11 2014-09-24 11:13:22

+0

这不是你真正的forms.py,因为没有'forms.ForeignKey'这样的东西。 – 2014-09-24 11:25:36

+0

在任何情况下,外键的下拉列表是模型表单的* default * behavour。 – 2014-09-24 11:27:10

回答

0

的models.py 如果你创建一个ModelFormDeveloper模型,每个外键呈现为一个ModelChoiceField。该字段的小部件是您正在寻找的html选择。

from django.forms import ModelForm 

class DeveloperForm(ModelForm): 
    class Meta: 
     model Developer 

看一看at the docs可以更好地掌握它。

0

我解决了它。

我只需要使用forms.ModelChoiceField()。

class AddTaskForm(forms.ModelForm): 
    story = forms.ModelChoiceField(Story.objects.all()) 
    developer = forms.ModelChoiceField(Developer.objects.all()) 
    description = forms.CharField(max_length=360) 
    iteration = forms.IntegerField() 

    class Meta: 
     fields = ["story", "developer", "description", "iteration"] 
     model = Task