通过外键获取Django记录

2024-05-01 21:31:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下关系:

class AMe(models.Model):
    Field1                  = models.CharField(max_length=50, choices = Field1_CHOICES)
    Field2                  = models.CharField(max_length=50, choices = Field2_CHOICES)

class MP(models.Model):
    MyAMeID                 = models.ForeignKey(AMe)
    Field1                  = models.CharField(max_length=50, choices = Field1_CHOICES)

现在的问题是我想用外键MyAme来选择MP中的记录,但是FK与AMe的主键不同,那么在MP中选择记录的简单方法是什么呢?我应该使用queryset和filter选项吗?或者有没有一个更聪明的方式,更Django的方式来做这件事,我错过了?你知道吗


Tags: model关系models方式记录mplengthmax
1条回答
网友
1楼 · 发布于 2024-05-01 21:31:09

您可以使用my_AMe_object.mp_set.all()(Django通过连接模型名称自动为ForeignKey字段创建反向关系-这里mp_set,可以通过related_name字段属性直接设置),或者MP.objects.filter(MyAMeID=my_AMe_object)。你知道吗

反向关系的用法示例:

>>> from test_app.models import AMe, MP
>>> ame = AMe.objects.create()
>>> for _ in xrange(6):
...     MP.objects.create(MyAMeID=ame)
>>> ame.mp_set.all()
[<MP: MP object>, <MP: MP object>, <MP: MP object>, <MP: MP object>, <MP: MP object>, <MP: MP object>]

请注意,mp_set返回一个QuerySet对象,不管结果的数量如何(类似于常规的Model.objects.all()方法)。你知道吗

相关问题 更多 >