Django inlines без внешнего ключа
У меня есть модели:
class MyModel(models.Model):
name = models.CharField()
group = models.ForeignKey(Group)
class Group(models.Model):
name = models.CharField()
class City(models.Model):
name = models.CharField()
group = models.ForeignKey(Group)
Я хочу получить инлайны (City) в админке MyModel для группы, включающей города:
class CityInline(admin.TabularInline):
model = City
@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
list_display = ('pk', 'name',)
inlines = [CityInline, ]
Как я могу это сделать?
Есть незначительные ошибки:
Устанавливайте
max_length
на каждомCharField
.Установить
on_delete
на каждыйForeignKey
.Сделайте
ForeignKey
в моделиCity
, которая будет иметь отношение ManyToOne сMyModel
.
Со:
models.py:
class Group(models.Model):
name = models.CharField(max_length=200)
class MyModel(models.Model):
name = models.CharField(max_length=200)
group = models.ForeignKey(Group, on_delete=models.CASCADE)
class City(models.Model):
name = models.CharField(max_length=200)
group = models.ForeignKey(Group, on_delete=models.CASCADE)
my_model = models.ForeignKey(MyModel, on_delete=models.CASCADE)
admin.py:
class CityInline(admin.TabularInline):
model = City
@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
list_display = ('pk', 'name', 'group')
inlines = [CityInline, ]
@admin.register(Group)
class GroupAdmin(admin.ModelAdmin):
list_display = ['id', 'name']
@admin.register(City)
class CityAdmin(admin.ModelAdmin):
list_display = ['id', 'group', 'my_model']