2014-12-02 2 views
0

Я включил инфраструктуру сайтов (включая промежуточное программное обеспечение) и установил два сайта (ID = 1 и ID = 2). Одна из моих моделей использует внешний ключ для сайта. Ради аргументов, позволяет сказать, что это выглядит как этотПоказать все экземпляры модели независимо от сайта в django admin

class Person(models.Model): 
    name = models.CharField(max_length=20) 
    site = models.ForeignKey(Site) 
    on_site = CurrentSiteManager() 

В моей settings.py я имею SITE_ID = 1

Если я создаю экземпляр лица на экранах администратора, и установите свой сайт на сайт с ID = 2, он создается, но скрыт в текущем окне администратора.

Это кажется мне неинтересным. Я хочу использовать мой единственный экран администратора django для управления двумя моими сайтами. В моем list_display у меня есть «сайт», поэтому, если он показал мне все экземпляры, которые я знал, с каким сайтом он был связан.

Есть ли способ убедиться, что на экранах администратора отображаются все экземпляры моей модели, независимо от идентификатора сайта?

Для управления всеми экземплярами модели я не хочу регистрироваться на двух отдельных URL-адресах администратора.

ответ

1

вам действительно не нужно CurrentSiteManager, просто подключите модель к модели сайта через ForeignKey like;

from django.contrib.sites.models import Site 
class Person(models.Model): 
    name = models.CharField(max_length=20) 
    site = models.ForeignKey(Site) 
    on_site = models.ForeignKey(Site,related_name="site_users") 

и администратор, вы увидите выпадающий список, чтобы выбрать с каким сайтом Person должна принадлежать.

dont забыть о миграции модели, поскольку вы меняете схему

+1

Спасибо. Я просто прокомментировал «CurrentSiteManager», и теперь они появляются. Честно говоря, я не знаю, почему это работает. Полагаю, мне нужно прочитать документы немного больше. – BoomShaka