【问题标题】:Django Classes communicationDjango 类通信
【发布时间】:2021-03-07 16:48:19
【问题描述】:

我正在尝试构建带有体育直播的演示站点。

我们在 Django 中有 2 个类 Class Team 将用于在 DB 中存储联盟中的所有团队 匹配将用于生成匹配流页面。 因此,一旦我完成了这些课程,我就尝试使用 shell 并在 DB 中创建第一个匹配项 我在 db 1 和 2 中创建了 2 个具有 id 的团队,但是在我陷入创建第一场比赛之后。如何将 ID 为 1 和 2 的(团队类)中的团队名称插入 Team1 和 Team2 字段?至少现在使用 shell。

from django.db import models

# Create your models here.
class Team(models.Model):
    name = models.CharField(max_length=50)
    league = models.CharField(max_length=50)

    def __str__(self):
        return self.name

class Match(models.Model):
    team1 = models.ForeignKey(Team, on_delete=models.CASCADE, related_name='Team1')
    team2 = models.ForeignKey(Team, on_delete=models.CASCADE, related_name='Team2')
    link = models.URLField
    time = models.DateTimeField

    def __str__(self):
        return self.id

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    您可以使用<i>fieldname</i>_id 来使用您所引用的对象的主键,因此如果您想使用主键12 创建与Teams 的匹配,您可以创建匹配:

    Match.objects.create(
        team1_id=1,
        team1_id=2,
        link='https://some.host.com/link/to/page'
    )

    【讨论】:

    • 好吧。我检查了数据库,是的,它已插入,但我需要在字段 team1 和 team2 中输入团队名称。现在我在数据库中得到 1 和 2 而不是团队名称
    • 我的意思是 Match 类应该包含在 team1 = 团队名称中(来自 Team Class 的 id 1)。同样适用于team2 =。 id 2 的团队名称)
    • @Win:那是个坏主意。想象一下,您发现一个团队名称的错字。然后你应该更新所有的字段,或者更糟:两个不同的 Teams 同名。如果您有一个Match 对象,您可以使用mymatch.team1.name 访问它。实际上,您应该将主键视为“黑盒令牌”,以标识一个对象,其中 恰好 是一个整数的事实是一个实现细节。
    • 好吧。也许您可以为这项任务提出更好的解决方案?如何存储团队并在比赛类中调用它?
    • @Wim:您可以使用mymatch.team1mymatch.team2 获取这些,其中mymatchMatch 对象。
    猜你喜欢
    • 1970-01-01
    • 2019-04-10
    • 2018-12-14
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    相关资源
    最近更新 更多