2016-09-06 3 views
2

У меня есть небольшая проблема, связанная с панелью django-admin. У меня есть 2 модели:Как отобразить выбор внешнего ключа в django-admin?

from django.db import models 

class Subject(models.Model): 
    subject = models.CharField(max_length=30, choices=[('P', 'Personal'), ('W', 'Work')]) 

    def __str__(self): 
     return self.subject 

class BlogPost(models.Model): 
    id = models.AutoField(unique=True, primary_key=True) 
    subject = models.ForeignKey(Subject, on_delete=models.CASCADE) 
    text = models.TextField(null=False) 
    pic = models.ImageField(upload_to='static/img/', default='static/img/no-image.png') 
    date = models.DateTimeField() 

    def __str__(self): 
     return self.subject 

Но в панели администратора всякий раз, когда я пытаюсь создать блог, выпадающее меню не показывает какое-либо из вариантов субъекта. Нужно ли мне редактировать функцию рендеринга администратора?

ответ

2

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

class BlogPost(models.Model): 
    id = models.AutoField(unique=True, primary_key=True) 
    subject = models.CharField(max_length=30, choices=[('P', 'Personal'), ('W', 'Work')]) 

    def __str__(self): 
     return self.subject 

Для чего вам нужен ForeignKey?

+1

Хм .. ты прав. Ваш выбор намного проще. Благодаря! – Disciples

+0

Но ... Идея заключалась в том, что вы можете добавлять темы из панели администратора и задавать темы сообщений с этим. Теперь, чтобы создать новый объект, я должен печально его печатать. – Disciples

+1

Ну, тогда вы должны придерживаться своих исходных моделей, но удалите параметры paramater из темы. После того, как вы добавите тему, внешний ключ BlogPost автоматически появится в виде раскрывающегося списка созданных объектов –

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