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, ]

Как я могу это сделать?

Есть незначительные ошибки:

  1. Устанавливайте max_length на каждом CharField.

  2. Установить on_delete на каждый ForeignKey.

  3. Сделайте 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']
Вернуться на верх