2014-09-06 45 views
0

我有以下模型,因为其意图是具有每个项目的动态属性。将选项显示为同一模型表单的另一个属性django

class Attribute(models.Model): 
    label = models.CharField(max_length = 255) 

class Value(models.Model): 
    attribute = models.ForeignKey(Attribute) 
    value  = models.CharField(max_length = 255) 

class Item(models.Model): 
    user   = models.ForeignKey(User, editable = False) 
    title   = models.CharField(max_length = 150, blank = True) 
    price   = models.DecimalField(max_digits = 8, decimal_places = 2, null = True) 
    categories = models.ManyToManyField(Category) 

class Datasheet(models.Model): 
    item   = models.ForeignKey(Item, editable = False) 
    attribute = models.ForeignKey(Attribute) 
    currentValue = models.ForeignKey(Value) 

当我保存没有问题的,但是当我要编辑的数据表形式的数值显示我的何种属性的 所有可能的值:

Datasheet 
Item: Mouse 
Attribute: Color 
Values: Red, Orange, Yellow, Blue, Apple, Honda, Yamaha 

但我只需要看到的属性值为了那个原因。

Datasheet 
Item: Mouse 
Attribute: Color 
Values: Red, Orange, Yellow, Blue 

在视图:

datasheetFormSet = inlineformset_factory(Item, Datasheet, form = DatasheetForm, extra = 0) 
formsetDatasheet = datasheetFormSet(instance = item) 

任何人有这种问题的经验?

回答

0

嗯,我解决了! =)

class DatasheetForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
    super(DatasheetForm, self).__init__(*args, **kwargs) 
    id = self['attr'].value() 
    self.fields['value'].queryset = Value.objects.filter(attr__pk = id) 
    class Meta: 
    model = Datasheet 
相关问题