gpt4 book ai didi

Django:相关名称属性(数据库错误)

转载 作者:行者123 更新时间:2023-12-02 08:16:47 24 4
gpt4 key购买 nike

我的模型有这个问题。

class Message(models.Model):
user = models.ForeignKey(UserProfile)
text = models.TextField(max_length=160)
voting_users = models.ManyToManyField(UserProfile)

def __unicode__(self):
return self.text

class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)

def __unicode__(self):
return self.user.username

当我尝试调用 message.voting_users 时收到此错误:

message: Accessor for m2m field 'voting_users' clashes with related field
'UserProfile.message_set'. Add a related_name argument to the definition for
'voting_users'.

我实际上是 django 的新手,我不明白应该如何使用 related_name 属性。

最佳答案

正如上面所说,voting_users 需要一个 related_name 参数,因为它与已定义的相关字段 message_set (django 为您的第一个 创建的 automagic 属性)冲突>ForeignKey, Message.user)

http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.related_name

您必须向您的foreignkey/m2m字段提供一个相关的名称参数,以定义反向关系的唯一访问器。

例如,UserProfileMessage 模型的反向关系是 UserProfile.message_set。如果您有两个 ForeignKey,则您正在尝试使用相同的 UserProfile.message_set 方法创建两个不同的反向关系。

user = models.ForeignKey(UserProfile, related_name="message_user")

...
# would create a UserProfile.message_user manager.
userprofile.message_user.all() # would pull all message the user has created.
userprofile.message_set.all() # would pull all Messages that the user has voted on.

关于Django:相关名称属性(数据库错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5180729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com