Промежуточная проверка формы модели - PullRequest
0 голосов
/ 13 февраля 2011

Мне интересно, как указать некоторые ограничения для промежуточной модели formset. У меня есть 3 класса в модели: Атрибут, Product и AttributeValuation, который является промежуточным для Attribute и Product:

class Attribute(models.Model):
    type = models.CharField(max_length = 200)
    pass

class Product(models.Model):
    attribute_values = models.ManyToManyField(Attribute, through='AttributeValuation')

class AttributeValuation(models.Model):
    attribute = models.ForeignKey(Attribute)
    product = models.ForeignKey(Product)

Кроме того, я построил AttributeValuationInline с AttributeFormset и зарегистрировал его в ProductAdmin:

class AttributeValuationInline(admin.TabularInline):
    model = AttributeValuation
    extra = 0
    formset = AttributeFormset

class ProductAdmin(admin.ModelAdmin):
    inlines = (AttributeValuationInline,)

class AttributeFormset(BaseInlineFormSet):
    def clean(self):
        pass

Мой вопрос: как я могу проверить в методе clean содержимое каждой строки (формы)? Я пробовал каждую форму self.forms в Formset, но я не мог получить доступ к определенным полям модели атрибутов (представьте, что есть некоторые, я не хочу, чтобы запутать мой вопрос с не относящимися к делу данными)?

В моем примере я хотел бы иметь максимум один Атрибут каждого типа для каждого Продукта (чтобы никто не помещал два или более атрибута с одним и тем же типом, связанным с одним Продуктом).

Ответы [ 2 ]

0 голосов
/ 17 февраля 2011

Я прошел

   for form in self.forms:
       form.instance

И это нормально. Почему cleaned_data лучше?

0 голосов
/ 16 февраля 2011
self.forms[0].cleaned_data

не будет работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...