我正在用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
中。
有人可以帮助我实现这一目标吗?
覆盖模型的save
方法可能很棘手,通常对于给定的挑战而言并不是最佳的解决方案。