2014-07-09 3 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): 
    ... 

Когда я редактирую класс "Бар" от Джанго администратора, я хотел бы видеть каждые объекты Foo в многострочном теге HTML. Отношения между Foo и Bar должны обновляться, когда я проверяю форму.

Как это сделать?

ответ

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.

Смежные вопросы