简体   繁体   English

如何在 django 中将新表用作现有表中的外键

[英]how to use new table as a foreign key in existing table in django

Hi Everyone i have two model 1 in Dailytrip and 2nd one is Team, i need to use Team model as foreign key in Dailytrip model, while run Makemigrations getting error.大家好,我在 Dailytrip 中有两个 model 1,第二个是团队,我需要在 Dailytrip model 中使用团队 model 作为外键,同时运行 Makemigrations 出现错误。 i am using django-2.2 and python 3.7我正在使用 django-2.2 和 python 3.7

Models.py模型.py

class DailyTrip(BaseModel):
    date = models.DateField(default=None)
    Team=models.ForeignKey(
        Team,
        models.CASCADE,
        verbose_name='Team',
        null=True,
        default=None
    )

class Team(BaseModel):
    name = models.CharField(max_length=30)

    def __str__(self):
        return self.name

Error错误

class DailyTrip(BaseModel):
  File "E:\11-march-2022\everest_jarvis\fleet\models.py", line 595, in DailyTrip
    Team,
NameError: name 'Team' is not defined

The reason this happens is because you define the ForeignKey before you define Team .发生这种情况的原因是因为您在定义Team之前定义了ForeignKey You can define Team first, so:您可以先定义Team ,因此:

class Team(BaseModel):
    # …
    pass

class DailyTrip(BaseModel):
    # …
    Team = models.ForeignKey(
        Team,
        models.CASCADE,
        verbose_name='Team',
        null=True,
        default=None
    )

or if that is not possible, use a string literal:或者如果那不可能,请使用字符串文字:

class DailyTrip(BaseModel):
    # …
    Team = models.ForeignKey(
        'Team',
        models.CASCADE,
        verbose_name='Team',
        null=True,
        default=None
    )

class Team(BaseModel):
    # …

Note : normally the name of the fields in a Django model are written in snake_case , not PascalCase , so it should be: team instead of Team .注意:通常 Django model 中的字段名称是用snake_case写的,而不是PascalCase ,所以应该是: team而不是Team

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM