# "models.py"
from django.db import models
# "unique=True" or
class Category(models.Model): # "primary_key=True" are needed
name = models.CharField(max_length=100, unique=True)
class Product(models.Model):
name = models.CharField(max_length=100)
categories = models.ForeignKey(
Category,
to_field='name', # ← Here
on_delete=models.PROTECT
)
3条答案
按热度按时间uxhixvfz1#
我还没有尝试过,但似乎从Django 1.0开始,你就可以这样做了:
这里有相关文档。
k4aesqcs2#
是和否。FK关系是在类级别描述的,并且在数据库中镜像FK关联,因此不能直接在FK参数中添加额外的信息。
相反,我建议使用一个字符串来保存另一个表上的字段名:
这样,您可以使用以下命令获取字段:
请注意,如果您使用的是多对多字段(而不是一对多字段),则内置支持创建自定义中间表,以便使用through选项保存 meta数据。
hivapdat3#
需要使用**“models.ForeignKey()"中的“to_field”**设置其他模型中的其他字段:
外键到字段
关联对象上的字段。默认情况下,Django使用关联对象的主键。如果你引用一个不同的字段,该字段必须unique=True。
例如,“产品”模型中的**“类别”字段作为外键引用了“类别”模型中的“名称”字段**,如下图所示。* 注意,“类别”模型中被引用的字段“名称”需要“unique=True”或“primary_key=True”**否则出错: