Задать вопрос
@alekssamos
Программист любитель

Логичное редактирование ForeignKey в админке?

Возьмём пример из документации:
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
  • Вопрос задан
  • 253 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы