Возьмём пример из документации:
from django.db import models
class Reporter(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
email = models.EmailField()
def __str__(self):
return "%s %s" % (self.first_name, self.last_name)
class Article(models.Model):
headline = models.CharField(max_length=100)
pub_date = models.DateField()
reporter = models.ForeignKey(Reporter, related_name="article", on_delete=models.CASCADE) # **********
def __str__(self):
return self.headline
class Meta:
ordering = ('headline',)
В админке можно будет добавить
новую Article, выбрать или создать
новый Reporter.
Но не наоборот.
Я смогу добавить Reporter, а уже Article никак не выберешь.
Другой пример: есть один вопрос и несколько вариантов ответа.
Так вот. Если в админке открыть создать вопрос, то ответы добавить будет нельзя,
надо будет сначала добавить ответ, затем в списке выбрать существующий / создать новый вопрос для него.
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, related_name="Choice", on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
Если сделать как сказано в учебнике, то форма для опроса в админке будет, а для вариантов - нет.
А вот если в admin.py зарегистрировать модель не Question, а Choice(, тогда я смогу добавлять как опросы, так и варианты, но только наоборот, сначала добавлю вариант, затем создам вопрос, и, так и продолжу, сначала вписывать вариант, затем выбирать к нему вопрос.
А хочется наоборот.
Можно ли так сделать?
Я же могу из одного другое получить, как Choice.question, так и наоборот Question.choice