从Django模型中的manytomany关系中获取字段值

时间:2017-09-09 13:54:36

标签: python django

我正在尝试获取与另一个模型相关联的字段值。模型Categorymanytomany模型有Profile的关系。

Category

id   category_name module_name
1    A             X
2    B             Y

profile_category

id    profile_id    category_id
1     2             1

例如。如果将类别ID X分配给用户ID 1

,我希望显示模块名称2

models.py

class Category(models.Model):
    category_name = models.CharField(max_length=150, blank=False, null=True, default="", unique=True)
    module_name = models.TextField(blank=False, null=True)

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name ='profile')
    phone_number = PhoneNumberField( blank=True, null=True)
    organisation = models.CharField(max_length=30, blank=True)
    category = models.ManyToManyField(Category)
    # Get the list of module names 

我尝试使用module_name = Coupling.objects.values('module_name'),但这会返回所有module_names而不是与用户ID 2关联的名称

非常感谢任何帮助/建议。提前谢谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

user = User.objects.get(id=2)

print(user.profile.category.values('module_name'))

更新

print(Profile.objects.filter(user=2).values('category__module_name'))