Как соединить 2 поля "многие ко многим" в Django

У меня есть 2 поля многие ко многим в моделях, и я хочу связать их друг с другом, то есть если я свяжу пользователя в модели Admin с Counter Party, я не смогу увидеть это в Counter Party admin

Как я могу это сделать?

Когда я пытаюсь сделать это, он показывает только в 1 модели

models.py

class CustomUser(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, verbose_name='Пользователь')
    user_counter = models.ManyToManyField('CounterParty', blank=True, verbose_name='Контрагенты пользователя')

    def __str__(self):
        return f'{self.user}'


class CounterParty(models.Model):
    GUID = models.UUIDField(default=uuid.uuid4, editable=True, unique=True)
    name = models.CharField(max_length=150, verbose_name='Наименование')
    customer = models.BooleanField(default=False, verbose_name='Заказчик')
    contractor = models.BooleanField(default=False, verbose_name='Подрядчик')
    counter_user = models.ManyToManyField(User, blank=True, related_name='counter_user',
                                          verbose_name='Пользователи контрагента')

    class Meta:
        verbose_name = 'Контрагент'
        verbose_name_plural = 'Контрагенты'

    def __str__(self):
        return

admin.py

from django.contrib import admin
from .models import CustomUser, CounterParty, ObjectList, SectionList
from authentication.models import User
from authentication.admin import UserAdmin


class CustomUserInLine(admin.StackedInline):
    model = CustomUser
    can_delete = False
    verbose_name_plural = 'Пользователи'


class CustomUserAdmin(UserAdmin):
    inlines = (CustomUserInLine,)


@admin.register(CounterParty)
class CounterPartyAdmin(admin.ModelAdmin):
    pass


admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)


user admin

администратор противоборствующей стороны

Вы не захотите иметь такие ссылки в ManyToMany. В идеале у вас должна быть односторонняя ссылка.

Вы можете сделать инлайн в вашей админке следующим образом:

class CustomUserInLine(admin.StackedInline):
    model = "CustomUser.user_counter.through"

Вот документация для встроенного M2M в админке: Django docs

Вернуться на верх