【发布时间】:2017-11-16 22:52:35
【问题描述】:
我正在试图弄清楚如何从一个模型中访问字段,该模型用作表单正在查询的模型中的 ForeignKey。
每个Room 都有一个表单,用户可以在其中从可能的Layout 对象的动态列表中选择一个Layout。
1—HTML forms/room/update/layouts.html
<form class="layouts__form form-horizontal" action="" method="post" enctype="multipart/form-data">
<fieldset class="form__options">
{% csrf_token %}
{% for field in form.layout %}
<div class="layouts__layout">
{{ field.tag }}
{{ field.choice_label }}
<label for="value_{{ forloop.counter0 }}">
<div class="layouts__layout__thumbnail layouts__layout__thumbnail--{{ field.choice_label }}" style="background-image: url('### (I WOULD LIKE TO LOAD 'Layout.thumbnail' HERE) ###');"></div>
</label>
</div>
{% endfor %}
<div class="form__submit">
<button type="submit">Submit</button>
</div>
</fieldset>
</form>
2—views.py 中的 this 正在调用表单:
class RoomLayoutView(UpdateView):
model = Room
form_class = RoomLayoutForm
template_name = 'forms/room/update/layouts.html'
3 - 这是由 forms.py 中的 this 创建的:
class RoomLayoutForm(forms.ModelForm):
layout = forms.ModelChoiceField(
widget=forms.RadioSelect(attrs={'type': 'radio', 'id': 'value',}),
queryset=Layout.objects.all(),
required=False, empty_label=None)
class Meta:
model = Room
fields = ['layout']
4 - 使用 Room 模型来自:
class Room(models.Model):
title = models.CharField(max_length=200, blank=True)
layout = models.ForeignKey(Layout, related_name='template_selected', blank=True, null=True)
def __str__(self):
return self.title
5 - 将 Layout 模型之一作为此处定义的 ForeignKey:
class Layout(models.Model):
title = models.CharField(max_length=200)
...
padding_top = models.IntegerField(blank=False, default=0)
...
thumbnail = models.FileField(upload_to='layouts')
created = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ('-title',)
def __str__(self):
return self.title
我试图弄清楚如何在实际表单中从Layout 模型访问属性。我特别想在顶部的表单中动态加载Layout.thumbnail 或Layout.padding_top。我已经尝试了至少 8 种不同的方法,但无法找到一种方法来完成这项工作。任何帮助将不胜感激。
【问题讨论】: