2016-09-10 3 views
0

У меня есть две роли пользователя в Django:ключ иностранной модели в Django администратора

  • Рекламная вставка
  • Продавцы

Я создал две модели, Продавец Модель имеет ForeignKey поле для автофургоны (каждый у продавца есть реклама, связанная с). Когда я зарегистрировать модели в админ я могу создавать рекламные ролики и связанных с ними продавцов с использованием StackedInline, TabularInline и т.д.

У меня проблема мне нужно, чтобы связать пользователей к этой модели, чтобы отождествить, Логин и т.д. админ мне нужно создать пользователя (в инлайн образом, не выпадающий список)

Это мой код:

в models.py:

class Commercial(models.Model): 
    name = models.CharField(max_length=255, null=True) 
    user = models.OneToOneField(User, null=True) 


class Seller(models.Model): 
    name = models.CharField(max_length=255, null=True) 
    commercial = models.ForeignKey('Commercial') 
    user = models.OneToOneField(User, null=True) 

в admin.py:

class SellerAdmin(admin.StackedInline): 
    model = Seller 
    extra = 1 

class CommercialAdmin(admin.ModelAdmin): 
    inlines = [SellerAdmin] 

admin.site.register(Commercial, CommercialAdmin) 

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

enter image description here

ответ

0

Там нет никакого способа, чтобы сделать обратную связь (так сказать) в виде встраивает. Административная панель Django по умолчанию не обладает этой способностью.

Что вы можете сделать, это отменить регистрацию по умолчанию UserAdmin, создать новую панель администратора, наследуя исходную, и добавить этого продавца в качестве встроенного. По-прежнему существует проблема, что Django не поддерживает несколько встроенных линий, следовательно, вы не сможете использовать коммерческую модель на той же странице администратора.

Чтобы исправить это, вы можете обратиться к this information from the doc, который показывает, как перезаписать автоматически созданный ModelForm для определенного ModelAdmin.

Это, однако, не будет таким полезным, поскольку они много работают. Я предпочел бы предложить применить обходное решение в отношении того, как ваше приложение используется, а не усложнять его. Зависит от потребностей проекта, нужно ли вам преодолевать эту проблему.