型号.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')
使用以下设置,如何获取给定数据源的所有DatasetRequests?dataset\请求(DatasetRequest)是DataSource中的外键。DatasetRequest中没有多对多,尽管每个DatasetRequest都有数据源。我需要多对多吗
您可以对模型的向后关系使用访问器
从Django documentation:
它使用在
ForeignKey
字段中指定的related_name
字段,但默认情况下设置为模型名称在您的示例中,您可以执行以下操作:
现在
data_requests
将是所有QuerySet
对象的DataRequest
,这些对象的外键指向data_source
相关问题 更多 >
编程相关推荐