django admin中的反向外键关系

时间:2014-07-09 11:53:41

标签: python django django-admin

我有两个简单的一对多关系。

models.py

class Bar(models.Model):
  label = models.CharField(max_length=36)

class Foo(models.Model):
  bar = models.ForeignKey(Bar, null = True)

admin.py

class BarAdmin(admin.modelAdmin):
  ...

当我正在编辑" Bar"来自django admin的类,我想在多行选择HTML标记中看到每个Foo对象。当我验证表格时,应该更新Foo和Bar之间的关系。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用

解决Foo实例问题
bar = Bar.objects.get(pk = bar_id)
foo_set = bar.foo_set.all()

其中bar_id是Bar对象的主键,或者

foo_set = Foo.objects.filter(bar__pk = bar_id) # Note the double underscore

如果要在模板中的选择标记中渲染Foo对象,可以手动执行:

<select>
{% for f in foo_set %}
<option value="{{ f.pk }}">{{ f }}</option>
{% endfor %}
</select>

或者您可以创建一个django表单,请参阅django forms