Django many to many admin with custom through object

Обновить

November 2018

Просмотры

604 раз

4

позволяет предположить, что у меня есть такая модель:

from django.db import models

class Person(models.Model):
    name = models.CharField(max_length=128)

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, through='Membership')

class Membership(models.Model):
    person = models.ForeignKey(Person)
    group = models.ForeignKey(Group)
    date_joined = models.DateField()
    invite_reason = models.CharField(max_length=64)

    class Meta:
        db_table = mysql_membership

Так что мой в-середине таблицы выбирается (и создан вручную) со мной. А теперь я хотел бы создать администратор с инлайн formset в для объектов группы. Именно так:

class MembershipInline(admin.TabularInline):
    model = Membership
    extra = 1

class GroupAdmin(admin.ModelAdmin):
    inlines = (MembershipInline,)

admin.site.register(Group, GroupAdmin)

Проблема заключается в том, что, когда я пытаюсь получить форму редактирования для данной группы, я получаю эту ошибку:

Exception Type:     OperationalError
Exception Value:    

(1054, "Unknown column 'mysql_membership.id' in 'field list'")

Это мне понятно, так как первичный ключ в этой mysql_membership таблице представляет собой набор столбцов (вместо одной простой колонны primary_key):

PRIMARY KEY (person, group, invite_reason)

Я хочу, чтобы вы знали, что я не могу изменить схему базы данных. Как я могу включить formset для многих ко многим поля на основе обычая «через» стол / модель? Пожалуйста помоги.

Кстати. Я использую пример из: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#working-with-many-to-many-intermediary-models

0 ответы