簡體   English   中英

django-如何獲取與模型相關的所有外鍵的列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM