django改变了外键场

时间:2014-08-19 21:54:02

标签: python django django-models django-forms

这是我的models.py

 class Equipment(models.Model):#table 
    equipment_Number = models.CharField(max_length=50,default=0,unique=True) #column
    equipment_Name = models.CharField(blank=True, max_length=50,default='Dry')
    mfd = models.DateField( default=datetime.date.today) #column
    make = models.CharField(max_length=200)
    model = models.CharField(max_length=200)
    location = models.CharField(max_length=200)
    doors = models.BooleanField(default=True)
    locks = models.BooleanField(default=False)

    def __unicode__(self):  
        return self.Make

class Inspection(models.Model):
    inspected = models.ForeignKey(Equipment)#the key that links the tables
    does_It_Work =  models.BooleanField(default=True)
    repairs = models.CharField(max_length=5000)
    ins_date = models.DateTimeField( default=datetime.datetime.now)

这是我的form.py

class EquipmentForm(ModelForm):
    class Meta:
        model = Equipment

class InspectionForm(ModelForm):
    class Meta:
        model = Inspection
抱歉,让我更清楚一点。我的代码,'检查'课程链接到'设备'通过' make'属性。我需要它通过"设备_Number'属性。

我将设备类的名称更改为汽车,因为我认为它会使概念更加切实,并且会使您更容易提供帮助。原来我只是造成了更多的困惑。感谢您所有的帮助。 SO Rocks!

1 个答案:

答案 0 :(得分:1)

如果您希望Equipment模型的表单只显示equipment_Number字段,那么您可以在forms.py中将其定义如下:

class EquipmentNumberForm(ModelForm):
    class Meta:
        model = Equipment
        fields = ['equipment_Number']

保存此表单(当然使用它的POST数据!)将创建具有指定Equipment的{​​{1}}模型的实例,并将所有其他字段设置为其默认值或空值。 / p>

请注意,我为表单设置了equipment_Number类的fields属性。这是一个字符串列表,用于指定表单应显示哪些字段。您可以(尽管不建议这样做)使用属性Meta,该属性将显示除列表中指定的字段之外的所有字段。

You can view the documentation here.

然而,你的问题并没有真正说明这是否是你想要的。

顺便说一句,你应该小心你的命名约定。类名应始终为exclude,属性,变量和方法名称应始终为CamelCase。这将使您的代码对于阅读它的每个人都更加清晰,包括您自己!