【问题标题】:How to change data inside table django?如何更改表 django 中的数据?
【发布时间】:2021-03-10 13:51:46
【问题描述】:

我一直在创建 Twitter 的克隆。用户可以注册、登录、写推文。推文模式在这里:

class TweetModel(models.Model):
    text = models.TextField(max_length=300, blank=False)
    created_at = models.DateTimeField(auto_now_add=True)
    owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True)
    username = models.CharField(max_length=100, blank=True)

    def __str__(self):
        return f'{self.username}: {self.text[0:15]}'

一旦用户更改了他/她的用户名,我也想在他们写的推文中更改用户名。 我该如何处理?谢谢。

【问题讨论】:

  • 你为什么将用户名存储在其他表中?单独的外键就足够了。
  • 您可以在名为“Profile”的类中为每个用户创建一个唯一的 id,其中包含用户名、头像和 ID,然后在您的 tweetModel 中使用用户的 id 创建一个文件,然后显示通过显示用户的用户名和推文的用户 ID 来获取 html 中的信息。
  • 因为我需要在前端呈现每条推文的所有者。 Abdul Aziz

标签: django database django-models django-rest-framework


【解决方案1】:

您无需将用户名存储在TweetModel 中。您可以像这样访问用户名:

tweet = TweetModel.objects.get(pk=1).owner.username

owner 是一个ForeignKey,这意味着它存储了用户ID,.owner 表示找到具有此ID 的用户,.username 表示返回该用户的username 字段。

现在您可以直接访问User 表,因此任何更改都会在那里。

【讨论】:

  • 但我需要每条推文的所有者。我需要在前端渲染它们。不存储所有者怎么知道?bruh
  • tweet.owner 是所有者,您也可以在模板中访问它。基本上,它返回您指定为ForeignKey 的模型实例,在本例中为User
  • 但我的前端(反应)与 django 是分开的。我正在通过 REST API 获取数据。 Navid
  • 您还可以在 DRF 中序列化关系,以防您将其用于您的 API。如果您手动执行此操作,那么您可以对owner 执行相同操作。 owner 是一个模型实例,就像任何其他模型实例一样,你可以用它做任何你想做的事情。
猜你喜欢
  • 2013-12-19
  • 2010-09-07
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
  • 2021-12-21
相关资源
最近更新 更多