2017-09-09 118 views
0

我想獲得與另一個模型關聯的字段值。型號CategoryProfile型號有manytomany的關係。從Django模型中的多對多關係獲取字段值

Category

id category_name module_name 
1 A    X 
2 B    Y 

profile_category

id profile_id category_id 
1  2    1 

對於如。我想顯示模塊的名稱X如果類別ID 1分配給用戶ID 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不其關聯的名稱用戶名2

任何幫助/建議,高度讚賞。提前致謝。

回答

0

試試這個:

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

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

更新:

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

感謝。但我得到一個錯誤 - 'AttributeError:'用戶'對象沒有'profile''屬性 –

+0

@PrithvirajMitra請參閱最新的答案。 –

+0

謝謝Jahongir。雖然有不同的錯誤 - 'NameError:name'Profile'未定義'。 –