Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 来自模板的Django外键值_Python_Django_Django Models_Django Templates_Foreign Keys - Fatal编程技术网

Python 来自模板的Django外键值

Python 来自模板的Django外键值,python,django,django-models,django-templates,foreign-keys,Python,Django,Django Models,Django Templates,Foreign Keys,我已经看过了类似问题的其他答案,但我似乎无法让它起作用。以下是我的模型结构: models.py class Seller(models.Model): seller_full_name = models.CharField(max_length=50) seller_listing_name = models.CharField(max_length=50) <-- I want to display this in template email = model

我已经看过了类似问题的其他答案,但我似乎无法让它起作用。以下是我的模型结构:

models.py

class Seller(models.Model):
    seller_full_name = models.CharField(max_length=50)
    seller_listing_name = models.CharField(max_length=50) <-- I want to display this in template
    email = models.EmailField(max_length=50)
    date_added = models.DateField(auto_now_add=True)

    def __str__(self):
        return self.seller_listing_name

# Create your models here.
class Product(models.Model):
    ...
    seller = models.ForeignKey(Seller, on_delete=models.CASCADE, null=True, blank=True)
    ...

    def __str__(self):
        return self.product_name
在模板中,我遍历产品并构建显示项目详细信息的卡片。我还想在每张卡片上显示每种产品的卖家名称。我似乎无法在视图中获得正确的外键语句,因为它在卖方名称应该出现的地方呈现为空

products-page.html

{% for product in products %}
<div class="col-lg-3 col-md-6 mb-4">
    ...
        <p>
            // {{ product.seller.seller_listing_name }} // <-- display sellers name here
        </p> 
        <h4 class="card-title">
            <a href="#">{{ product.product_name }}</a>
        </h4>
        <p>#{{ product.product_id }}</p>
        <p>{{ product.description }}</p>
        <h5>${{ product.price | floatformat:2 }}</h5>
    ...
</div>
{% endfor %}
products-page.html

{% for product in products %}
<div class="col-lg-3 col-md-6 mb-4">
    ...
        <p>
            // {{ product.seller.seller_listing_name }} // <-- display sellers name here
        </p> 
        <h4 class="card-title">
            <a href="#">{{ product.product_name }}</a>
        </h4>
        <p>#{{ product.product_id }}</p>
        <p>{{ product.description }}</p>
        <h5>${{ product.price | floatformat:2 }}</h5>
    ...
</div>
{% endfor %}
{%用于产品中的产品%}
...


//{{product.seller.seller_listing_name}}/如果是ForeignKey,您需要添加如下内容

{% for product in products %}
<div class="col-lg-3 col-md-6 mb-4">
    [...]
        {% for seller in product.seller_set.all %}
        <p>
            // {{ seller.seller_listing_name }} // <-- display sellers name here
        </p> 
        {% endfor %}
        <h4 class="card-title">
            <a href="#">{{ product.product_name }}</a>
        </h4>
    [...]
{%用于产品中的产品%}
[...]
{product.seller\u set.all%中的卖方为%s}


//{{seller.seller\u listing\u name}}//我尝试过这个方法,但它从未进入for循环,因此p标记从未呈现。我刚刚再试了一次,同样的事情发生了。当黄色的调试屏幕打开时,我可以看到包含产品查询集的本地变量。因为它有“卖方id”,正确引用了我想要的卖方名称。也许有一种方法可以使用ID,但我必须以另一种方式获取名称?顺便问一下,为什么在视图中使用
products=Product.objects.values().order\u by('?')
?你从产品模型中创建dict?是的,我希望每次视图渲染时产品的顺序都会改变。我没有意识到这可能与此有关,因为没有其他任何东西受到影响,但现在我认为这可能是。。。我可以尝试删除它,看看它是否有帮助性
Product.objects.order\u by('?')
{% for product in products %}
<div class="col-lg-3 col-md-6 mb-4">
    ...
        <p>
            // {{ product.seller.seller_listing_name }} // <-- display sellers name here
        </p> 
        <h4 class="card-title">
            <a href="#">{{ product.product_name }}</a>
        </h4>
        <p>#{{ product.product_id }}</p>
        <p>{{ product.description }}</p>
        <h5>${{ product.price | floatformat:2 }}</h5>
    ...
</div>
{% endfor %}
{% for product in products %}
<div class="col-lg-3 col-md-6 mb-4">
    [...]
        {% for seller in product.seller_set.all %}
        <p>
            // {{ seller.seller_listing_name }} // <-- display sellers name here
        </p> 
        {% endfor %}
        <h4 class="card-title">
            <a href="#">{{ product.product_name }}</a>
        </h4>
    [...]