Python Django中另一个实体的单个属性的外键
我想在django中创建数据库模型并定义一个外键。我在internet上看到的所有示例都有以下语法Python Django中另一个实体的单个属性的外键,python,django,database,sqlite,django-models,Python,Django,Database,Sqlite,Django Models,我想在django中创建数据库模型并定义一个外键。我在internet上看到的所有示例都有以下语法 attr = models.ForeignKey(Entity) 但是,我希望外键与另一个实体的单个属性链接,而不是与整个实体链接 我有以下型号: class User(models.Model): user_id = models.PositiveIntegerField(primary_key=True) password = models.CharField(max_length=20)
attr = models.ForeignKey(Entity)
但是,我希望外键与另一个实体的单个属性链接,而不是与整个实体链接
我有以下型号:
class User(models.Model):
user_id = models.PositiveIntegerField(primary_key=True)
password = models.CharField(max_length=20)
email = models.EmailField()
........
class ContentItem(models.Model):
content_id = models.PositiveIntegerField(primary_key=True)
title = models.CharField(max_length=100)
description = models.TextField()
.........
author_id = models.ForeignKey(User, on_delete= models.CASCADE)
这里,我希望ContentItem.author\u id是User.User\u id的外键,而不是整个用户模型的外键。在输入author_id的值时,我只想输入普通id(1,2,3),而不是用户的所有实例
抱歉,如果问题非常笼统,请提前感谢您应该将fk字段命名为:
author = models.ForeignKey(User, on_delete= models.CASCADE)
因为Django将自动创建属性author\u id
,并且
content_item.author_id
将允许您直接访问用户id,而无需额外的db命中。通过命名,您可以直接通过
author\u id\u id
访问id。您必须重写models类中的str(self)方法。
前
models.py
类用户(models.Model):
.
.
其中,attribute name是要引用的属性的名称。
享受没有意义的编码。外键是链接表中项目的ID。显然,遵循这种关系会给你带来整个相关的对象——你为什么不想要呢?
def __str__(self):
return f”{self.attribute-name}