Джанго: как использовать FK на обратной линии - PullRequest
0 голосов
/ 04 мая 2018

У меня есть следующие модели:

models.py

class Tipo_mundo(models.Model):
    nome_tipo_mundo = models.CharField(max_length=80)
    descricao_tipo_mundo = models.TextField(max_length=600)



class Mundo(models.Model):
    nome_mundo = models.CharField(max_length=80)
    descricao_mundo = models.CharField(max_length=200)
    atividades = models.ManyToManyField(Atividade, through='Jornada', related_name='mundos')
    tipo_mundo = models.ForeignKey(Tipo_mundo, on_delete=models.DO_NOTHING, related_name='mundos')

и я хочу поместить Mundo на страницу редактирования администратора Tipo_mundo. В качестве встроенного добавить столько Mundo, сколько я хочу. Ссылаясь на список Мундос уже создан. Я хочу создавать и редактировать так же, как обычный inline

когда я ставлю админов вроде:

admin.py

class MundoInline(admin.StackedInline):
   model = Mundo
   extra = 1

class TipoMundoAdmin(admin.ModelAdmin):
   form = TipoMundoModelForm
   list_display = ('nome_tipo_mundo', 'descricao_tipo_mundo')
   inlines = [MundoInline,]

я получаю: не хочу я хочу: как то так как я могу это сделать ???

1 Ответ

0 голосов
/ 05 мая 2018

Разница между тем, что вы получаете, и тем, что вы хотите, заключается в том, что первым является внешний ключ (т. Е. Mundo может быть связан с одним и только одним Tipo_mundo - это означает, что вы не можете выбрать существующий Mundo откуда-то еще), а второе - это отношение «многие ко многим» (т. е. вы можете связать одну Mundo с любым числом Tipo_mundo s).

Если вы хотите иметь возможность создать список Mundo с, который вы можете присоединить к любому Tipo_mundo, то структура вашей модели должна измениться. Вместо внешнего ключа используйте ManyToManyField для соединения двух моделей, например ::

tipo_mundo = models.ManyToManyField(Tipo_mundo, related_name='mundos')
...