Django for many administrators using a custom object

suggests that I have a model like this:

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

So, my middle table is selected by me (and created manually). And now I would like to create an administrator with a built-in set of forms for Group objects. Similar:

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

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

admin.site.register(Group, GroupAdmin)

The problem is that when I try to get the edit form for this group, I get this error:

Exception Type:     OperationalError
Exception Value:    

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

This is understandable to me because the primary key in this mysql_membership table is a set of columns (instead of one simple primary_key column):

PRIMARY KEY (person, group, invite_reason)

I want you to know that I CANNOT fix the database schema. How can I include a set of forms for a many-to-many field based on a custom pivot table / model? Please, help.

. : https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#working-with-many-to-many-intermediary-models

+4

Source: https://habr.com/ru/post/1530334/


All Articles