gpt4 book ai didi

python - 如何创建一个包含两个字段作为用户模型类型的表

转载 作者:太空宇宙 更新时间:2023-11-03 20:44:28 25 4
gpt4 key购买 nike

我正在尝试在 Django 项目中创建一个消息应用程序,我希望该表具有三个字段,“sender”“title”“消息”“接收者”。标题和消息可以声明为字符字段。但我无法将发送者和接收者作为两个外键字段。我不知道这里该用什么。谁能帮我解决这个问题吗?

我尝试使用用户模型将这两个字段声明为ForeignKey。但这没有用。

from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class msgs(models.Model):
to = models.OneToOneField(User, on_delete=models.CASCADE)
frm = models.OneToOneField(User, on_delete=models.CASCADE)
title = models.CharField(max_length = 255)
body = models.CharField(max_length=2000)

错误:

msgs.msgs.frm: (fields.E304) Reverse accessor for 'msgs.frm' clashes with reverse accessor for 'msgs.to'.<br>
HINT: Add or change a related_name argument to the definition for 'msgs.frm' or 'msgs.to'.<br>
msgs.msgs.frm: (fields.E305) Reverse query name for 'msgs.frm' clashes with reverse query name for 'msgs.to'.<br>
HINT: Add or change a related_name argument to the definition for 'msgs.frm' or 'msgs.to'.<br>
msgs.msgs.to: (fields.E304) Reverse accessor for 'msgs.to' clashes with reverse accessor for 'msgs.frm'.<br>
HINT: Add or change a related_name argument to the definition for 'msgs.to' or 'msgs.frm'.<br>
msgs.msgs.to: (fields.E305) Reverse query name for 'msgs.to' clashes with reverse query name for 'msgs.frm'.<br>
HINT: Add or change a related_name argument to the definition for 'msgs.to' or 'msgs.frm'.<br>

最佳答案

正如错误消息所示,由于您与同一模型有两个关系,因此需要为它们指定相关名称。

class msgs(models.Model):
to = models.OneToOneField(User, on_delete=models.CASCADE, related_name='to_user')
frm = models.OneToOneField(User, on_delete=models.CASCADE, related_name='from_user')
title = models.CharField(max_length = 255)
body = models.CharField(max_length=2000)

其他一些提示:

  • 使用大写字母作为类名称(类 Message 或类 Msg)
  • 如果您希望用户进行多个对话,请使用 models.ForeignKey 而不是 models.OneToOneField

关于python - 如何创建一个包含两个字段作为用户模型类型的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56690086/

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