5

次のモデルのフォームセットを作成しようとしています。

class Category(models.Model):

    name = models.CharField(max_length=100, unique=True)
    description = models.TextField(null = True, blank=True)

class Recipe(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField()
    user = models.ForeignKey(User)
    categories = models.ManyToManyField(Category, null = True, blank = True)

しかし、私がフォームセットを実装しようとするときはいつでも、次のようになります。

FormSet = inlineformset_factory(Category, Recipe, extra=3)
        formset = FormSet()

カテゴリモデルにForeignKeyが存在しないというエラーが表示されます。ManyToManyFieldを使用してフォームセットを構築したり、この機能を何らかの方法で複製したりすることは可能ですか?

ありがとう!

4

1 に答える 1

1

ソースコードとドキュメントによると、外部キーのみ

したがって、モデルのフォームセットを作成する場合は、変更する必要があります

categories = models.ManyToManyField(Category, null = True, blank = True)

categories = models.ForeignKey("Category", null = True, blank = True)

ドキュメント: https ://docs.djangoproject.com/en/1.4/topics/forms/modelforms/#inline-formsets https://docs.djangoproject.com/en/1.4/topics/forms/modelforms/#more-than -1つの外部キーから同じモデル

Djangoソース:

def inlineformset_factory(parent_model, model, form=ModelForm,
                          formset=BaseInlineFormSet, fk_name=None,
                          fields=None, exclude=None,
                          extra=3, can_order=False, can_delete=True, max_num=None,
                          formfield_callback=None):
    """
    Returns an ``InlineFormSet`` for the given kwargs.

    You must provide ``fk_name`` if ``model`` has more than one ``ForeignKey``
    to ``parent_model``.
    """
于 2012-04-24T17:59:04.800 に答える