![](/img/trans.png)
[英]How to return multiple queryset object or add queryset result from get_queryset method in Django
[英]Django how to add data to Object from queryset
我想顯示客戶端列表並顯示分配給他們的標簽,但我有問題,因為我的標簽在其他表中,我不知道如何將數據連接在一起。 客戶端可以有幾個標簽,也可以沒有。 哪種方法是正確的? 你能給我一些建議嗎? 我需要一個帶有標簽分隔逗號的變量或帶有標簽的對象,我可以在模板引擎中使用它們。
視圖.py:
@user_passes_test(lambda u: u.is_staff, login_url='/account/login/')
def client_list(request):
dict = {}
dict['clients'] = Client.objects.all()
return render(request, 'panel/client/list.html', dict)
模型.py:
class Client(models.Model):
id = models.OneToOneField(User, on_delete=models.CASCADE, unique=True, primary_key=True)
uuid = models.UUIDField(default=uuid.uuid4, editable=False)
name = models.CharField(max_length=256, unique=True)
class TagsClientChoices(models.Model):
name = models.CharField(max_length=80, unique=True)
class TagsClientList(models.Model):
tag_id = models.ForeignKey('TagsClientChoices')
client = models.ForeignKey('Client', blank=True, null=True)
默認情況下,每個外鍵都與 _set 有反向關系
所以你可以這樣做
for client in clients:
for taglist in client.tagsclientlist_set.all():
# use taglist
雖然這可能不是很高效,但您可能希望prefetch_related
並提供一個 related_name ,它將在兩個查詢而不是多個查詢中檢索結果。
class TagsClientList(models.Model):
tag_id = models.ForeignKey('TagsClientChoices')
client = models.ForeignKey('Client', blank=True, null=True, related_name='tags_list')
dict['clients'] = Client.objects.all().prefetch_related('tags_list')
for client in clients:
for taglist in client.tags_list.all():
# use taglist
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.