Python Заполняет ManyToManyField автоматически, используя тот же экземпляр модели - PullRequest
0 голосов
/ 30 сентября 2019

Я облажался, чтобы решить проблему за последние 7 дней, но я не смог решить эту проблему! так сильно разочарован сейчас !!!

Я хочу, когда я создаю новый GroupMess с admin, тот же администратор должен автоматически добавить в поле members,

это мои модели:

class GroupMess(models.Model):
    admin = models.OneToOneField(
        User,
        on_delete=models.CASCADE,
        related_name='mess_admin'
    )
    members = models.ManyToManyField(User, related_name='mess_members', blank=True)

    def save(self, *args, **kwargs):
        self.members.add(self.admin)
        super(GroupMess, self).save(*args, *kwargs)

Если я попытаюсь создать новый GroupMess, он выдаст мне эту ошибку:

"<GroupMess: GroupMess object (None)>" needs to have a value for field "id" before this many-to-many relationship can be used.

Если я переопределю save метод, подобный этому:

def save(self, *args, **kwargs):
        super(GroupMess, self).save(*args, *kwargs)
        self.members.add(self.admin)

тогда не выдает никакой ошибки, но проблема в том, что поле members остается пустым

Может кто-нибудь помочь исправить это?

Я хочу, когда я создаю GroupMess, Я добавлю администратора во время создания groupmess, и поле members должно быть заполнено автоматически admin

* Я имею в виду, администратор группы также будет членом группы *

1 Ответ

0 голосов
/ 30 сентября 2019

После добавления членов в модель группы сохраните ее снова.

def save(self, *args, **kwargs):
        super(Group, self).save(*args, **kwargs)
        self.members.add(self.admin)
        self.save()
...