簡體   English   中英

Django OneToOneField & Foreignkey - 如何從相關模型中獲取價值?

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

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