django社交媒体应用程序ManyToManyField人口问题

问题描述 投票:1回答:1

我正在用Django编写社交媒体应用。我设计了一个模型,但是当我尝试填充它时,它将引发此错误:

ValueError at /admin/social/group/add/

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

这些是我的模特:

from django.db import models


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


class Group(models.Model):
    admin = models.ForeignKey(
        Person, 
        on_delete=models.CASCADE,
        related_name='group_admin'
    )
    members = models.ManyToManyField(
        Person, 
        related_name='group_members',
        blank=True
    )

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

我希望admin也成为group成员。

当我保持这种save方法时...

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

...它不会引发任何错误,但members字段并未按预期填充。

我想在创建Group期间提交管理员的同时实现,成员字段将自动使用相同的管理员外键填充。

我的意思是,admin将在同一组的members中。

有人可以帮助我实现这一目标吗?

django django-models django-rest-framework
1个回答
0
投票

覆盖模型的save方法可能很棘手,通常对于给定的挑战而言并不是最佳的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.