[英]django - how can I get a list of all foreignkeys related to a model?
models.py
class DataSource(VoteModel, models.Model):
dataset_request = models.ForeignKey(
'DatasetRequest', on_delete=models.CASCADE, blank=True, null=True)
file = models.FileField(upload_to='datasource_files/')
file_size = models.BigIntegerField(blank=True, null=True)
title = models.CharField(max_length=255, default="Untitled")
description = models.TextField(blank=True, null=True)
slug = models.SlugField(blank=True, null=True)
is_public = models.BooleanField(default=True)
creator = models.ForeignKey(User, on_delete=models.CASCADE)
is_csv_or_tsv = models.BooleanField(null=True)
thumbnail = models.ImageField(
upload_to="datasource_thumbnails/", blank=True, null=True)
date_uploaded = models.DateTimeField(
auto_now_add=True, blank=True, null=True)
comments = GenericRelation(Comment)
class DatasetRequest(VoteModel, models.Model):
reward = models.DecimalField(
decimal_places=2, max_digits=10) # if 0, 1 medal
title = models.CharField(max_length=255)
description = models.TextField(blank=True, null=True)
slug = models.SlugField(blank=True, null=True)
is_public = models.BooleanField(default=True)
creator = models.ForeignKey(User, on_delete=models.CASCADE)
thumbnail = models.ImageField(
upload_to="datasetrequest_thumbnails/", blank=True, null=True)
best_dataset_entry = models.ForeignKey(
DatasetEntry, on_delete=models.CASCADE, blank=True, null=True)
date_uploaded = models.DateTimeField(
auto_now_add=True, blank=True, null=True)
is_paid = models.BooleanField(default=False)
comments = GenericRelation(Comment)
qa_testers = models.ManyToManyField(User, related_name='qas')
通過以下設置,如何獲取給定DataSource的所有DatasetRequests? dataset_request(DatasetRequest)是DataSource中的外鍵。 盡管每個DatasetRequest都有數據源,但DatasetRequest中沒有多對多。 我是否需要多對多?
您可以將訪問器用於模型的向后關系。
從Django文檔中 :
Django還為關系的“另一側”創建API訪問器-從相關模型到定義關系的模型的鏈接。 例如,博客對象b可以通過entry_set屬性b.entry_set.all()訪問所有相關Entry對象的列表。
本品采用related_name
指定字段ForeignKey
領域,但被設置為默認的型號名稱。
在您的示例中,您可以執行以下操作:
data_source = DataSource.objects.get(pk=1) # or whatever
data_requests = data_source.datarequest_set.all()
現在data_requests
將是所有具有外鍵指向data_source
DataRequest
對象的QuerySet
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.