Как получить атрибуты из модели foreignkey в Django? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть три модели: предмет, вариант и вариант_элемента. Элемент имеет отношение внешнего ключа с вариацией, которое, в свою очередь, имеет отношение внешнего ключа с моделью ItemVariation. Мой вопрос: как мне получить доступ к атрибутам варианта Item, чтобы получить данные Dynami c с помощью модели Item. Но я не могу этого сделать. Может ли кто-нибудь помочь мне с этим?

My models.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

My admin.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)

My views.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>

1 Ответ

2 голосов
/ 05 мая 2020

таким образом можно отобразить набор вариантов элемента

{% for var in object.variation_set.all %}
 <h5>{{ var.name }}</h5>
{% for item in var.itemvariation_set.all %}
 <h5>{{ item.value }}</h5>
{% endfor %}{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...