Джанго вложенные строки, любой обходной путь? - PullRequest
0 голосов
/ 30 августа 2018

Я хочу отредактировать модель в админке, у которой есть внешний ключ к другой модели, у которой, в свою очередь, есть внешний ключ к базовой модели:

from django.contrib import admin
from .models import Role
from .models import Address
from .models import Date
from .models import Person
from .models import Name

# Register your models here.

admin.site.register(Role)
admin.site.register(Address)
admin.site.register(Date)
#admin.site.register(Name)
#admin.site.register(Person)

class RoleInline(admin.TabularInline):

    model=Role
    extra=3

class NameInline(admin.TabularInline):

    model=Name
    extra=3

class PersonInline(admin.ModelAdmin):

    fieldsets=[
        (None,{'fields': ['mail','firstName','lastName','phoneNumber','streetAdress','zipcode','city']}),
    ]
    inlines = [RoleInline,Name]
    search_fields = ['firstName']

#admin.site.register(Name,NameInline)
admin.site.register(Person,PersonInline)

а это модель:

class Role(models.Model):

    role=models.CharField(max_length=200)
    person=models.ForeignKey(Person,on_delete=models.CASCADE)

    def __str__(self):
        return self.role

    class Meta:
        ordering = ('role',)

class Name(models.Model):

    name=models.CharField(max_length=200)
    role=models.ForeignKey(Role,on_delete=models.CASCADE)

    def __str__(self):
        return self.name

    class Meta:
        ordering = ('name',)

class Address(models.Model):

    name=models.ForeignKey(Name,on_delete=models.CASCADE)
    street=models.CharField(max_length=200)
    city=models.CharField(max_length=200)
    mail=models.EmailField()
    phone=PhoneNumberField()

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = "addreses"

    class Meta:
        ordering = ('name',)

class Date(models.Model):

    date=models.DateField()
    location=models.ManyToManyField(Address)

проблема в том, что имя связано с ролью, а не напрямую с человеком, то есть у роли есть внешний ключ к человеку, а имя имеет внешний ключ к роли, и его нужно добавить на страницу администратора, которую я использую. В django отсутствуют вложенные строки, есть ли обходной путь?

...