Обратные строки в Django Admin - PullRequest
4 голосов
/ 30 ноября 2011

У меня есть 2 модели следующим образом.Теперь мне нужно вставить модель A на странице модели B.

models.py

class A(models.Model):
    name = models.CharField(max_length=50)

class B(models.Model):
    name = models.CharField(max_length=50)
    a = models.ForeignKey(A)

admin.py

class A_Inline(admin.TabularInline):  
    model = A

class B_Admin(admin.ModelAdmin): 
    inlines = [A_Inline]

это возможно?Если да, пожалуйста, дайте мне знать ..

Ответы [ 2 ]

3 голосов
/ 30 ноября 2011

Нет, поскольку A должен иметь ForeignKey для B, чтобы использовать его как Inline. Иначе как будут записываться отношения после сохранения встроенного A?

1 голос
/ 01 ноября 2017

Вы не можете сделать это, как сказал Тимми О'Махони.Но вы можете сделать B встроенным в A, если хотите.Или, может быть, вы можете управлять тем, как django отображает его в

def Unicode (self):

models.py

class A(models.Model):
    name = models.CharField(max_length=50)
    def __unicode__(self):
        return self.name

class B(models.Model):
    name = models.CharField(max_length=50)
    a = models.ForeignKey(A)

admin.py

class B_Inline(admin.TabularInline):  
    model = B
class A_Admin(admin.ModelAdmin):
    inlines = [
        B_Inline,
    ]
admin.site.register(A, A_Admin)
admin.site.register(B)

Или, может быть, вы хотите использовать отношение «многие ко многим»?

models.py

class C(models.Model):
    name = models.CharField(max_length=50)
    def __unicode__(self):
        return self.name
class D(models.Model):
    name = models.CharField(max_length=50)
    cs = models.ManyToManyField(C)

admin.py

class C_Inline(admin.TabularInline):  
    model = D.cs.through
class D_Admin(admin.ModelAdmin):
    exclude = ("cs",)
    inlines = [
        C_Inline,
    ]
admin.site.register(C)
admin.site.register(D, D_Admin)
...