繁体   English   中英

如何从 Django 中的外键 model 获取属性?

[英]How to get attributes from foreignkey model in Django?

我有三个模型,item、variation 和 item_variations。 该项目与变化具有外键关系,而变化又与 ItemVariation model 具有外键关系。 我的问题是,如何使用 model 项目访问项目变化的属性以获取动态数据。 但我不能这样做。 谁能帮我解决这个问题?

我的模型.py:

class Item(models.Model):
    title = models.CharField(max_length=120)
    price = models.FloatField()

class Variation(models.Model):
    item = models.ForeignKey(Item, on_delete=models.CASCADE)
    name = models.CharField(max_length=50) # size, color

class ItemVariation(models.Model):
    variation  = models.ForeignKey(Variation, on_delete=models.CASCADE)
    value = models.CharField(max_length=50) # small, medium large etc

我的管理员.py:

class ItemVariationAdmin(admin.ModelAdmin):
    list_display = ['variation',
                    'value']

    list_filter = ['variation', 'variation__item']
    search_fields = ['value']


class ItemVariationInLineAdmin(admin.TabularInline):
    model = ItemVariation
    extra = 1


class VariationAdmin(admin.ModelAdmin):
    list_display = ['item',
                    'name']
    list_filter = ['item']
    search_fields = ['name']
    inlines = [ItemVariationInLineAdmin]


admin.site.register(ItemVariation, ItemVariationAdmin)
admin.site.register(Variation, VariationAdmin)

我的意见.py:

class ItemDetailView(DetailView):
    model = Item
    template_name = 'products/product.html'

我的产品。html:

<h1 class="product-title">{{ item.title }}</h1>
                  <a href="#">
                    <span class="badge purple mr-1">{{ object.get_category_display }}</span>
                  </a> 
<form class="form" method="POST" action="{{ object.get_add_to_cart_url }}">
                    {% csrf_token %}
                    {% if object.itemvariation_set.all %}

                      <h5>{{ object.itemvariation_set.all }}</h5>
                    {% endif %}
                    <div class="action">
                      <button class="btn btn-success">Add to Cart</button>
                    </div>
                  </form>

这样您就可以显示项目变化集

{% for var in object.variation_set.all %}
 <h5>{{ var.name }}</h5>
{% for item in var.itemvariation_set.all %}
 <h5>{{ item.value }}</h5>
{% endfor %}{% endfor %}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM