Что следует применять, ManyToMany или модель с 2-мя иностранными ключами? - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть две модели: Owner и Accountants.Владелец может иметь 0 или более бухгалтеров, бухгалтер может быть подключен к 1 или более владельцам.

До сих пор я создал две модели, используя ManyToManyField, вот они:

models.py
    class Accountants(models.Model):
        owner = models.ManyToManyField(Owner, related_name='accountants')
        company = models.CharField(db_column='Company', max_length=25)
        fiscal_rep = models.BooleanField(default=False)

    class Owner(models.Model):
        name = models.CharField(db_column='Owner_Name', max_length=200)
        surname = models.CharField(db_column='Owner_Surname', max_length=30)
        property = models.ManyToManyField(Property, blank=True)

Я создал свою форму для добавления бухгалтера, она выглядит следующим образом:

class AccountantAddForm(forms.ModelForm):
    owner = forms.ModelMultipleChoiceField(queryset=Owner.objects.all(),widget=forms.Select(
    attrs={
    ...

Проблема в том, что когда я добавляю бухгалтера, поле «Владелец» ожидает более одного значения имою форму я передаю владельцу, предварительно заполненную как initial data, поэтому мне пришла в голову идея сделать другую модель с именем Owner_Accountant, соединяющую обе модели Owner и Accountants, как показано ниже:

class Owner_Accountants(models.Model):
    owner_pk = models.ForeignKey(Owner, related_name='owner_accountant')
    accountant_pk = models.ForeignKey(Accountants, related_name='accountants_owner')

То, что я хочу знать, это: хорошее ли это решение или это одно и то же?Есть ли лучший способ сделать это, или я делаю это совершенно неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...