【问题标题】:show options as another attribute of the same model form django将选项显示为同一模型表单 django 的另一个属性
【发布时间】:2014-10-31 11:40:49
【问题描述】:

我有以下模型,因为目的是为每个项目提供动态属性。

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)

有人遇到过这种问题吗?

【问题讨论】:

    标签: django forms model entity-attribute-value formset


    【解决方案1】:

    好吧,我解决了! =)

    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
    

    【讨论】:

      猜你喜欢
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      相关资源
      最近更新 更多