2014-07-09 99 views
0

我有两个简单的一对多关系的类。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): 
    ... 

当我从编辑Django管理 “棒” 类,我希望看到每个对象的Foo在多行选择HTML标签中。当我验证表格时,Foo和Bar之间的关系应该更新。

我该怎么做?

回答

1

可以使用

bar = Bar.objects.get(pk = bar_id) 
foo_set = bar.foo_set.all() 

解决美孚实例,其中bar_id是你的酒吧对象的主键,或者

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

如果你想渲染美孚在选择标签对象在模板中,您可以手动执行此操作:

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

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