Модель Джанго позволяет несколько - PullRequest
0 голосов
/ 12 октября 2019

Итак, я хочу создать модель, скажем, «Автомобили». Я хочу реализовать поле detail_name и detail_desc

detail_name  = models.CharField(max_length=200)
detail_desc= models.CharField(max_length=200)

Но я хочу, чтобы администратор мог добавить еще одно detail_name и detail_desc, если онихочу.

Как я могу это реализовать?

Ответы [ 2 ]

1 голос
/ 13 октября 2019

Вы можете использовать Внешний ключ для этой цели.

Тогда ваш код будет похож на это:

class Car(models.Model):
    # some code here


class DetailInfo(models.Model):
    car = models.ForeignKey(Car, on_delete=models.CASCADE, related_name='details')
    detail_name  = models.CharField(max_length=200)
    detail_desc= models.CharField(max_length=200)

Тогда вы можете увидеть все детали по:

car = Car.objects.first()  # just example, load first instance of Car
detail_infos = car.details.all()  # now detail_infos include queryset of all DetailInfo instances, that connected to Car

В администратор django вы можете добавить details в виде строк (см., Например, эту ссылку ).

Пример

# admin.py
from django.contrib import admin

from .models import Car, DetailInfo

class DetailInfoInline(admin.TabularInline):  # you can use admin.TabularInline or admin.StackedInline here
    model = DetailInfo

@admin.register(Car)  # shortcut for admin.site.register()
class CarAdmin(admin.ModelAdmin):
    inlines = [DetailInfoInline]

0 голосов
/ 14 октября 2019

Большое спасибо @ Евгению М. за помощь. Без него я бы не получил эту работу. После кода моего обновленного TabularInline

admin.py

class DetailInfoInline(admin.TabularInline):
    model = DetailInfo

class ShowCaseAdmin(admin.ModelAdmin):
    inlines = [
        DetailInfoInline,
    ]

models.py

class DetailInfo(models.Model):
    link = models.CharField(max_length=200)
    showcase = models.ForeignKey(ShowCase, on_delete=models.CASCADE, related_name='details')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...