как обрабатывать отношения многие ко многим в модельных формах - PullRequest
0 голосов
/ 07 июня 2011

У меня есть модель, похожая на эту:

     class A(models.Model):
        name = models.CharField(primary_key=True)

    class B(models.Model):
        (morefields)
        target = models.ManyToManyField(A,through='C')

    class C(models.Model):
        a_key = models.ForeignKey(A)
        b_key = models.ForeignKey(B)
        (extra fields)

Я создаю форму для редактирования элемента B, используя modelForm. Однако я получаю сообщение об ошибке «Невозможно установить значения для ManyToManyField, в котором указана промежуточная модель». Если я исключу поле назначения, оно будет работать нормально.

Не могли бы вы предложить какой-нибудь способ обойти это?

Ответы [ 2 ]

0 голосов
/ 07 июня 2011

По вашим собственным словам, у вас есть (extra fields) в Class C.Как django должен заполнять эти дополнительные поля, если с помощью заданного A вы хотите создать больше B.

Вы, вероятно, должны создать администратора для C, где вы можете добавить каждое A и B до данного C

0 голосов
/ 07 июня 2011

Вы можете использовать inlines.Проблема в том, что Django не может создать отношение для вас, потому что есть дополнительные поля, которые должны быть установлены в соединительной таблице (ваша сквозная модель).Попробуйте следующее:

class CInlineAdmin(admin.TabularInline):
    model = C
    extra = 1

class BAdmin(admin.ModelAdmin):
    inlines = [CInlineAdmin,]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...