![](/img/trans.png)
[英]How to get all related objects in django model ForeignKey and OneToOneField
[英]Django OneToOneField & Foreignkey - How to get value from related model?
我現在一整天都在反對這個問題,並嘗試了來自stackoverflow和其他谷歌結果的各種建議,並查閱了django文檔,但都無濟於事。
在我的 Django 項目中,我有下面列出的兩個模型。 模型中的相關值是每個“Sag”唯一的 rowid。 我的目標是,當我使用“ Sag.objects.all() ”進行查詢時,它還將返回附加到該特定 rowid 的組。 理想情況下,它應該是“OneToOneField”而不是“ForeignKey”,因為 rowid 應該只在兩個表中存在一次,但我最近的嘗試讓我將其更改為“ForeignKey”。 但是,到目前為止,我無法使用我嘗試過的不同解決方案獲得相關領域
class Sag(models.Model):
id = models.IntegerField(blank=True, null=False, primary_key=True)
rowid = models.IntegerField(db_column='RowId', blank=True, null=True)
posts = models.TextField(db_column='POSTS', blank=True, null=True)
date = models.TextField(db_column='Date', blank=True, null=True)
art = models.IntegerField(db_column='Art', blank=True, null=True)
class Grouping(models.Model):
rowid = models.ForeignKey(Sag, on_delete=models.CASCADE, db_column='RowId')
group = models.IntegerField(db_column='Group', blank=True, null=True)
關於我將如何解決這個問題的任何想法/資源?
使用您在此處擁有的ForeignKey
,您可以傳遞related_name 。 如果你不傳遞一個,Django 默認分配一個模型名稱,然后是_set
,這里是sag.grouping_set.all()
。
sag = Sag.objects.get(id=1)
groupings = sags.grouping_set.all()
在模板中,如果您有一個 Sag 列表:
{% for sag in sags %}
{% for grouping in sag.grouping_set.all %}
{{ grouping.group }}
{% endfor %}
{% endfor %}
僅獲取值:
sag_groups = Sag.objects.all().values('posts', 'data', 'art', 'grouping_set__group')
使用OneToOneField你可以做類似的事情:
sag = Sag.objects.get(id=1)
grouping = sag.grouping
grouping_group = grouping.group
在模板內:
{% for sag in sags %}
{{ sag.posts }}
{{ sag.grouping.group }}
{{ sag.grouping.rowid}}
{% endfor %}
僅用於值:
sag_groups = Sag.objects.all().values('posts', 'data', 'art', 'grouping__group')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.