Python 为什么我无法访问django模板中的外键信息。

Python 为什么我无法访问django模板中的外键信息。,python,django,Python,Django,我正在开发一个django应用程序,它需要创建XML文件来响应请求。我的模型设置如下: # This is an auto-generated Django model module. # You'll have to do the following manually to clean this up: # * Rearrange models' order # * Make sure each model has one field with primary_key=True #

我正在开发一个django应用程序,它需要创建XML文件来响应请求。我的模型设置如下:

# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
#   * Rearrange models' order
#   * Make sure each model has one field with primary_key=True
#   * Make sure each ForeignKey has `on_delete` set to the desired behavior.
#   * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
from django.db import models


class Color(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', unique=True, max_length=255)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_Colors'

    def __str__(self):
        return "Color: [" + self.id.__str__() + ", " + self.name + "] "


class Company(models.Model):
    orders = models.ManyToManyField('Order', through='OrderCompany')
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', max_length=255, blank=True, null=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_Companies'

    def __str__(self):
        return "Company:[" + self.orders.__str__() + ", " + self.id.__str__() + ", " + self.name + "] "


class ModelColor(models.Model):
    color = models.ForeignKey(Color, models.DO_NOTHING, db_column='ColorID')
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_ModelColors'

    def __str__(self):
        return "ModelColor:[" + self.color + ", " + self.id.__str__() + "] "


class ModelData(models.Model):
    colors = models.ManyToManyField('Color', through='ModelDataColor')
    sizes = models.ManyToManyField('Size', through='ModelDataSize')
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', max_length=255)  # Field name made lowercase.
    descript = models.CharField(db_column='Descript', max_length=2047, blank=True, null=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_ModelData'

    def __str__(self):
        return "ModelData:[" + self.colors.__str__() + ", " + self.sizes.__str__() + ", " + self.id.__str__() + ", " + self.name + ", " + self.descript + ", " + "] "


class Modeldatacolor(models.Model):
    model_data = models.ForeignKey(ModelData, models.DO_NOTHING, db_column='ModelDataID', primary_key=True)
    color = models.ForeignKey(Color, models.DO_NOTHING, db_column='ColorID')

    class Meta:
        managed = False
        db_table = 'Data_ModelDataColors'
        unique_together = (('model_data', 'color'),)

    def __str__(self):
        return "Modeldatacolor:[" + self.model_data.__str__() + ", " + self.color.__str__() + "] "


class Modeldatasize(models.Model):
    model_data = models.ForeignKey(ModelData, models.DO_NOTHING, db_column='ModelDataID', primary_key=True)
    size = models.ForeignKey('Size', models.DO_NOTHING, db_column='SizeID')

    class Meta:
        managed = False
        db_table = 'Data_ModelDataSizes'
        unique_together = (('model_data', 'size'),)

    def __str__(self):
        return "Modeldatasize:[" + self.model_data.__str__() + ", " + self.size.__str__() + "] "

class Modelsize(models.Model):
    color = models.ForeignKey(ModelColor, models.DO_NOTHING, db_column='ColorID')
    size = models.ForeignKey('size', models.DO_NOTHING, db_column='SizeID')
    amount = models.IntegerField(db_column='Amount')  # Field name made lowercase.
    amountfinished = models.IntegerField(db_column='AmountFinished')  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_ModelSizes'

    def __str__(self):
        return "Modelsize:[" + self.color.__str__() + ", " + self.size.__str__() + ", " + self.amount+ ", " + self.amountfinished + "] "


class Model(models.Model):
    model_color = models.ForeignKey(ModelColor, models.DO_NOTHING, db_column='ModelColorID')
    order = models.ForeignKey('Order', models.DO_NOTHING, db_column='OrderID')
    model_data = models.ForeignKey(ModelData, models.DO_NOTHING, db_column='ModelDataID')
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_Models'

    def __str__(self):
        return "Model:[" + self.model_color.__str__() + ", " + self.order.__str__() + ", " + self.model_data.__str__() + ", " + self.id.__str__() + "] "


class Ordercompany(models.Model):
    order = models.ForeignKey('Order', models.DO_NOTHING, db_column='OrderID', primary_key=True)
    company = models.ForeignKey(Company, models.DO_NOTHING, db_column='CompanyID')
    stage_number = models.IntegerField(db_column='StageNumber')

    class Meta:
        managed = False
        db_table = 'Data_OrderCompanies'
        unique_together = (('order', 'company'),)

    def __str__(self):
        return "Ordercompany:[" + self.order.__str__() + ", " + self.company.__str__() + ", " + self.stage_number + "] "

class Order(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    ordertimestamp = models.DateTimeField(db_column='OrderTimeStamp', blank=True, null=True)  # Field name made lowercase.
    finishtimestamp = models.DateTimeField(db_column='FinishTimeStamp', blank=True, null=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', max_length=255)  # Field name made lowercase.
    confirmed = models.IntegerField(db_column='Confirmed')  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_Orders'

    def __str__(self):
        self.ordertimestamp = "None"
        self.finishtimestamp = "None"
        return "Order:[" + self.id.__str__() + ", " + self.ordertimestamp + ", " + self.finishtimestamp + ", " + self.name + ", " + self.confirmed.__str__() + "] "

class Size(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', unique=True, max_length=255)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_Sizes'

    def __str__(self):
        return "Size: [" + self.id.__str__() + ", " + self.name + "] "
def index(request):
    template = loader.get_template('orders/responseTemplate.xml')
    company = Company.objects.get(id=10)  # remember to use `get` for a single item
    order_list = company.orders.all()
    tpcontext = {'orderList': order_list}
    return HttpResponse(template.render(tpcontext, request))
<?xml version="1.0" encoding="UTF-8"?>
<orders>
    {% for order in orderList %}
    <order id="{{ order.id }}">
        <models>
        {% for model in order.model_set.all %}
        <model id="{{ model.id }}">
            <name>{{model.model_data.name}}</name>
            {% for color in model.model_color_set.all %}
            <color name="'{{color.color.name}}'">
                {% for size in color.modelsize_set.all %}
                <sizeAmount name="'{{size.size.name}}'">{{size.amount}}</sizeAmount>
                {% endfor%}
            </color>
            {% endfor%}
        </model>
        {% endfor %}
        </models>
    </order>
    {% endfor %}
</orders>
<?xml version="1.0" encoding="UTF-8"?>
<orders>

    <order id="16">
        <models>

        <model id="17">
            <name>Pants</name>

        </model>

        <model id="18">
            <name>Pants</name>

        </model>

        </models>
    </order>

</orders> 
我调用创建模板,如下所示:

# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
#   * Rearrange models' order
#   * Make sure each model has one field with primary_key=True
#   * Make sure each ForeignKey has `on_delete` set to the desired behavior.
#   * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
from django.db import models


class Color(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', unique=True, max_length=255)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_Colors'

    def __str__(self):
        return "Color: [" + self.id.__str__() + ", " + self.name + "] "


class Company(models.Model):
    orders = models.ManyToManyField('Order', through='OrderCompany')
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', max_length=255, blank=True, null=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_Companies'

    def __str__(self):
        return "Company:[" + self.orders.__str__() + ", " + self.id.__str__() + ", " + self.name + "] "


class ModelColor(models.Model):
    color = models.ForeignKey(Color, models.DO_NOTHING, db_column='ColorID')
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_ModelColors'

    def __str__(self):
        return "ModelColor:[" + self.color + ", " + self.id.__str__() + "] "


class ModelData(models.Model):
    colors = models.ManyToManyField('Color', through='ModelDataColor')
    sizes = models.ManyToManyField('Size', through='ModelDataSize')
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', max_length=255)  # Field name made lowercase.
    descript = models.CharField(db_column='Descript', max_length=2047, blank=True, null=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_ModelData'

    def __str__(self):
        return "ModelData:[" + self.colors.__str__() + ", " + self.sizes.__str__() + ", " + self.id.__str__() + ", " + self.name + ", " + self.descript + ", " + "] "


class Modeldatacolor(models.Model):
    model_data = models.ForeignKey(ModelData, models.DO_NOTHING, db_column='ModelDataID', primary_key=True)
    color = models.ForeignKey(Color, models.DO_NOTHING, db_column='ColorID')

    class Meta:
        managed = False
        db_table = 'Data_ModelDataColors'
        unique_together = (('model_data', 'color'),)

    def __str__(self):
        return "Modeldatacolor:[" + self.model_data.__str__() + ", " + self.color.__str__() + "] "


class Modeldatasize(models.Model):
    model_data = models.ForeignKey(ModelData, models.DO_NOTHING, db_column='ModelDataID', primary_key=True)
    size = models.ForeignKey('Size', models.DO_NOTHING, db_column='SizeID')

    class Meta:
        managed = False
        db_table = 'Data_ModelDataSizes'
        unique_together = (('model_data', 'size'),)

    def __str__(self):
        return "Modeldatasize:[" + self.model_data.__str__() + ", " + self.size.__str__() + "] "

class Modelsize(models.Model):
    color = models.ForeignKey(ModelColor, models.DO_NOTHING, db_column='ColorID')
    size = models.ForeignKey('size', models.DO_NOTHING, db_column='SizeID')
    amount = models.IntegerField(db_column='Amount')  # Field name made lowercase.
    amountfinished = models.IntegerField(db_column='AmountFinished')  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_ModelSizes'

    def __str__(self):
        return "Modelsize:[" + self.color.__str__() + ", " + self.size.__str__() + ", " + self.amount+ ", " + self.amountfinished + "] "


class Model(models.Model):
    model_color = models.ForeignKey(ModelColor, models.DO_NOTHING, db_column='ModelColorID')
    order = models.ForeignKey('Order', models.DO_NOTHING, db_column='OrderID')
    model_data = models.ForeignKey(ModelData, models.DO_NOTHING, db_column='ModelDataID')
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_Models'

    def __str__(self):
        return "Model:[" + self.model_color.__str__() + ", " + self.order.__str__() + ", " + self.model_data.__str__() + ", " + self.id.__str__() + "] "


class Ordercompany(models.Model):
    order = models.ForeignKey('Order', models.DO_NOTHING, db_column='OrderID', primary_key=True)
    company = models.ForeignKey(Company, models.DO_NOTHING, db_column='CompanyID')
    stage_number = models.IntegerField(db_column='StageNumber')

    class Meta:
        managed = False
        db_table = 'Data_OrderCompanies'
        unique_together = (('order', 'company'),)

    def __str__(self):
        return "Ordercompany:[" + self.order.__str__() + ", " + self.company.__str__() + ", " + self.stage_number + "] "

class Order(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    ordertimestamp = models.DateTimeField(db_column='OrderTimeStamp', blank=True, null=True)  # Field name made lowercase.
    finishtimestamp = models.DateTimeField(db_column='FinishTimeStamp', blank=True, null=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', max_length=255)  # Field name made lowercase.
    confirmed = models.IntegerField(db_column='Confirmed')  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_Orders'

    def __str__(self):
        self.ordertimestamp = "None"
        self.finishtimestamp = "None"
        return "Order:[" + self.id.__str__() + ", " + self.ordertimestamp + ", " + self.finishtimestamp + ", " + self.name + ", " + self.confirmed.__str__() + "] "

class Size(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', unique=True, max_length=255)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_Sizes'

    def __str__(self):
        return "Size: [" + self.id.__str__() + ", " + self.name + "] "
def index(request):
    template = loader.get_template('orders/responseTemplate.xml')
    company = Company.objects.get(id=10)  # remember to use `get` for a single item
    order_list = company.orders.all()
    tpcontext = {'orderList': order_list}
    return HttpResponse(template.render(tpcontext, request))
<?xml version="1.0" encoding="UTF-8"?>
<orders>
    {% for order in orderList %}
    <order id="{{ order.id }}">
        <models>
        {% for model in order.model_set.all %}
        <model id="{{ model.id }}">
            <name>{{model.model_data.name}}</name>
            {% for color in model.model_color_set.all %}
            <color name="'{{color.color.name}}'">
                {% for size in color.modelsize_set.all %}
                <sizeAmount name="'{{size.size.name}}'">{{size.amount}}</sizeAmount>
                {% endfor%}
            </color>
            {% endfor%}
        </model>
        {% endfor %}
        </models>
    </order>
    {% endfor %}
</orders>
<?xml version="1.0" encoding="UTF-8"?>
<orders>

    <order id="16">
        <models>

        <model id="17">
            <name>Pants</name>

        </model>

        <model id="18">
            <name>Pants</name>

        </model>

        </models>
    </order>

</orders> 
我使用的模板文件如下所示:

# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
#   * Rearrange models' order
#   * Make sure each model has one field with primary_key=True
#   * Make sure each ForeignKey has `on_delete` set to the desired behavior.
#   * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
from django.db import models


class Color(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', unique=True, max_length=255)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_Colors'

    def __str__(self):
        return "Color: [" + self.id.__str__() + ", " + self.name + "] "


class Company(models.Model):
    orders = models.ManyToManyField('Order', through='OrderCompany')
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', max_length=255, blank=True, null=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_Companies'

    def __str__(self):
        return "Company:[" + self.orders.__str__() + ", " + self.id.__str__() + ", " + self.name + "] "


class ModelColor(models.Model):
    color = models.ForeignKey(Color, models.DO_NOTHING, db_column='ColorID')
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_ModelColors'

    def __str__(self):
        return "ModelColor:[" + self.color + ", " + self.id.__str__() + "] "


class ModelData(models.Model):
    colors = models.ManyToManyField('Color', through='ModelDataColor')
    sizes = models.ManyToManyField('Size', through='ModelDataSize')
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', max_length=255)  # Field name made lowercase.
    descript = models.CharField(db_column='Descript', max_length=2047, blank=True, null=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_ModelData'

    def __str__(self):
        return "ModelData:[" + self.colors.__str__() + ", " + self.sizes.__str__() + ", " + self.id.__str__() + ", " + self.name + ", " + self.descript + ", " + "] "


class Modeldatacolor(models.Model):
    model_data = models.ForeignKey(ModelData, models.DO_NOTHING, db_column='ModelDataID', primary_key=True)
    color = models.ForeignKey(Color, models.DO_NOTHING, db_column='ColorID')

    class Meta:
        managed = False
        db_table = 'Data_ModelDataColors'
        unique_together = (('model_data', 'color'),)

    def __str__(self):
        return "Modeldatacolor:[" + self.model_data.__str__() + ", " + self.color.__str__() + "] "


class Modeldatasize(models.Model):
    model_data = models.ForeignKey(ModelData, models.DO_NOTHING, db_column='ModelDataID', primary_key=True)
    size = models.ForeignKey('Size', models.DO_NOTHING, db_column='SizeID')

    class Meta:
        managed = False
        db_table = 'Data_ModelDataSizes'
        unique_together = (('model_data', 'size'),)

    def __str__(self):
        return "Modeldatasize:[" + self.model_data.__str__() + ", " + self.size.__str__() + "] "

class Modelsize(models.Model):
    color = models.ForeignKey(ModelColor, models.DO_NOTHING, db_column='ColorID')
    size = models.ForeignKey('size', models.DO_NOTHING, db_column='SizeID')
    amount = models.IntegerField(db_column='Amount')  # Field name made lowercase.
    amountfinished = models.IntegerField(db_column='AmountFinished')  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_ModelSizes'

    def __str__(self):
        return "Modelsize:[" + self.color.__str__() + ", " + self.size.__str__() + ", " + self.amount+ ", " + self.amountfinished + "] "


class Model(models.Model):
    model_color = models.ForeignKey(ModelColor, models.DO_NOTHING, db_column='ModelColorID')
    order = models.ForeignKey('Order', models.DO_NOTHING, db_column='OrderID')
    model_data = models.ForeignKey(ModelData, models.DO_NOTHING, db_column='ModelDataID')
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_Models'

    def __str__(self):
        return "Model:[" + self.model_color.__str__() + ", " + self.order.__str__() + ", " + self.model_data.__str__() + ", " + self.id.__str__() + "] "


class Ordercompany(models.Model):
    order = models.ForeignKey('Order', models.DO_NOTHING, db_column='OrderID', primary_key=True)
    company = models.ForeignKey(Company, models.DO_NOTHING, db_column='CompanyID')
    stage_number = models.IntegerField(db_column='StageNumber')

    class Meta:
        managed = False
        db_table = 'Data_OrderCompanies'
        unique_together = (('order', 'company'),)

    def __str__(self):
        return "Ordercompany:[" + self.order.__str__() + ", " + self.company.__str__() + ", " + self.stage_number + "] "

class Order(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    ordertimestamp = models.DateTimeField(db_column='OrderTimeStamp', blank=True, null=True)  # Field name made lowercase.
    finishtimestamp = models.DateTimeField(db_column='FinishTimeStamp', blank=True, null=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', max_length=255)  # Field name made lowercase.
    confirmed = models.IntegerField(db_column='Confirmed')  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_Orders'

    def __str__(self):
        self.ordertimestamp = "None"
        self.finishtimestamp = "None"
        return "Order:[" + self.id.__str__() + ", " + self.ordertimestamp + ", " + self.finishtimestamp + ", " + self.name + ", " + self.confirmed.__str__() + "] "

class Size(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', unique=True, max_length=255)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Data_Sizes'

    def __str__(self):
        return "Size: [" + self.id.__str__() + ", " + self.name + "] "
def index(request):
    template = loader.get_template('orders/responseTemplate.xml')
    company = Company.objects.get(id=10)  # remember to use `get` for a single item
    order_list = company.orders.all()
    tpcontext = {'orderList': order_list}
    return HttpResponse(template.render(tpcontext, request))
<?xml version="1.0" encoding="UTF-8"?>
<orders>
    {% for order in orderList %}
    <order id="{{ order.id }}">
        <models>
        {% for model in order.model_set.all %}
        <model id="{{ model.id }}">
            <name>{{model.model_data.name}}</name>
            {% for color in model.model_color_set.all %}
            <color name="'{{color.color.name}}'">
                {% for size in color.modelsize_set.all %}
                <sizeAmount name="'{{size.size.name}}'">{{size.amount}}</sizeAmount>
                {% endfor%}
            </color>
            {% endfor%}
        </model>
        {% endfor %}
        </models>
    </order>
    {% endfor %}
</orders>
<?xml version="1.0" encoding="UTF-8"?>
<orders>

    <order id="16">
        <models>

        <model id="17">
            <name>Pants</name>

        </model>

        <model id="18">
            <name>Pants</name>

        </model>

        </models>
    </order>

</orders> 

但是我不知道那个错误是什么

您是否尝试过
model.modelcolor\u set.all

Django在将
CamelCase
型号名称转换为小写时不会添加下划线。

您是否尝试过
model.modelcolor\u set.all

Django在将
CamelCase
模型名称转换为小写时不添加下划线。

模型和模型颜色之间存在一对一的关系,因此使用集合没有意义

看起来您可能试图访问的是ModelData模型的颜色集。你可以这样做:

{% for model in order.model_set.all %}
    <model id="{{ model.id }}">
    <name>{{model.model_data.name}}</name>
    Colors:
    {% for color in model.model_data.colors_set.all %}
        {{ color.name }}
    {% endfor %}
{% endfor %}
{%用于order.model\u set.all%}
{{model.model_data.name}
颜色:
{model.model_data.colors_set.all%}
{{color.name}
{%endfor%}
{%endfor%}

Model和ModelColor之间存在一对一的关系,因此使用集合没有意义

看起来您可能试图访问的是ModelData模型的颜色集。你可以这样做:

{% for model in order.model_set.all %}
    <model id="{{ model.id }}">
    <name>{{model.model_data.name}}</name>
    Colors:
    {% for color in model.model_data.colors_set.all %}
        {{ color.name }}
    {% endfor %}
{% endfor %}
{%用于order.model\u set.all%}
{{model.model_data.name}
颜色:
{model.model_data.colors_set.all%}
{{color.name}
{%endfor%}
{%endfor%}

您的模型定义了一个从模型到模型的外键颜色。这意味着每个模型只有一个modelcolor。这里没有
\u集合
,也没有可迭代的内容;可以按照外键获取该模型的单色。您可以使用
with
标记使其稍微易于使用

    <model id="{{ model.id }}">
        <name>{{model.model_data.name}}</name>
        {% with model.model_color as color %}
        <color name="'{{color.color.name}}'">
            {% for size in color.modelsize_set.all %}
            <sizeAmount name="'{{size.size.name}}'">{{size.amount}}</sizeAmount>
            {% endfor%}
        </color>
        {% endwith %}

{{model.model_data.name}
{%使用model.model_颜色作为颜色%}
{%表示color.modelsize\u set.all%}
{{size.amount}}
{%endfor%}
{%endwith%}

您的模型定义了一个从模型到模型的外键颜色。这意味着每个模型只有一个modelcolor。这里没有
\u集合
,也没有可迭代的内容;可以按照外键获取该模型的单色。您可以使用
with
标记使其稍微易于使用

    <model id="{{ model.id }}">
        <name>{{model.model_data.name}}</name>
        {% with model.model_color as color %}
        <color name="'{{color.color.name}}'">
            {% for size in color.modelsize_set.all %}
            <sizeAmount name="'{{size.size.name}}'">{{size.amount}}</sizeAmount>
            {% endfor%}
        </color>
        {% endwith %}

{{model.model_data.name}
{%使用model.model_颜色作为颜色%}
{%表示color.modelsize\u set.all%}
{{size.amount}}
{%endfor%}
{%endwith%}


是否有任何理由通过ModelColor模型指定模型的颜色?为什么不通过外键直接将模型链接到颜色?这将使您尝试做的事情变得更加简单。因此,我正在使用一个数据库,该数据库不仅由django应用程序使用。事实上,每个表中都有很多我并不真正关心的列。在我特定的django项目中,使用所有这些字段确实没有意义,因为我永远不会真正使用它们,所以这就是为什么它看起来有点奇怪明白了-请参阅下面的答案。这能解决问题吗?不,不能。这可能是因为字段中有一个
\uu
符号吗?也许django不喜欢这样?明白了。您的颜色是否直接通过外键在模型中指定?还是通过ModelData模型链接?如果是后者,这将是一个不同的解决方案,我很乐意对此进行一些思考。是否有任何理由通过ModelColor模型指定模型的颜色?为什么不通过外键直接将模型链接到颜色?这将使您尝试做的事情变得更加简单。因此,我正在使用一个数据库,该数据库不仅由django应用程序使用。事实上,每个表中都有很多我并不真正关心的列。在我特定的django项目中,使用所有这些字段确实没有意义,因为我永远不会真正使用它们,所以这就是为什么它看起来有点奇怪明白了-请参阅下面的答案。这能解决问题吗?不,不能。这可能是因为字段中有一个
\uu
符号吗?也许django不喜欢这样?明白了。您的颜色是否直接通过外键在模型中指定?还是通过ModelData模型链接?如果是后者,这将是一个不同的解决方案,我很乐意考虑一下。在
Model
Model(右混淆)中,字段名为
Model\u color
,因此我假设它会将其留在那里。我试过了,但似乎不起作用。还尝试按照Sam的建议删除
\u集合
部分在
模型中
模型(右混淆)字段名为
模型颜色
,因此我假设它会将其留在那里。我试过了,但似乎不起作用。还尝试按照Sam的建议删除
\u set
部分。这似乎也不起作用。(也尝试了py_dude提供的答案)好吧,我得等到本周晚些时候再回去工作!更新:不,颜色的名称也会显示,但是,我无法显示“sizeAmount”字段。这似乎也不起作用。(也尝试了py_dude提供的答案)好吧,我得等到本周晚些时候再回去工作!更新:否颜色的名称也会显示,但是,我无法显示“sizeAmount”字段。