[英]Nested ManyToMany Field in Django
使用:Django 1.8和Python 3.4
我有以下模型:
class SpaCenter(models.Model):
name = models.CharField(max_length=100)
website = models.CharField(max_length=200)
facebook_url = models.CharField(max_length=200)
faq = models.ManyToManyField(SpaCenterFAQ)
class SpaCenterFAQ(models.Model):
pass
class SpaCenterFAQLanguage(models.Model):
faq = models.ForeignKey(SpaCenterFAQ)
faq_language = models.CharField(max_length=2,
choices=LANGUAGE_CHOICES,
default=ENGLISH)
faq_question = models.CharField(max_length=200)
faq_answer = models.TextField()
總結一下:
使用Django內置的管理界面,我希望能夠在SpaCenter管理界面中為FAQ輸入所有不同的翻譯。
所以本質上這是一個嵌套關系,我知道這個線程:
以及這兩個社區構建的嘗試解決該問題的應用程序:
但是,即使使用這些庫,我仍在努力了解如何在Django Admin中定義它。
需要幫助以了解如何在SpaCenter的管理界面中顯示這種關系。
非常感謝。
編輯:
使用djangosuperlines應該看起來像:
from django.contrib.admin import TabularInline, StackedInline, site
from super_inlines.admin import SuperInlineModelAdmin, SuperModelAdmin
from .models import *
class SpaCenterFAQLanguageInlineAdmin(SuperInlineModelAdmin, TabularInline):
model = SpaCenterFAQLanguage
class SpaCenterFAQInlineAdmin(SuperInlineModelAdmin, StackedInline):
model = SpaCenter
inlines = (SpaCenterFAQLanguageInlineAdmin,)
class SpaCenterAdmin(SuperModelAdmin):
inlines = (SpaCenterFAQInlineAdmin,)
site.register(SpaCenter, SpaCenterAdmin)
from django.db import models
class SpaCenter(models.Model):
name = models.CharField(max_length=100)
website = models.CharField(max_length=200)
facebook_url = models.CharField(max_length=200)
faqs = models.ManyToManyField('SpaCenterFAQ', blank=True)
class SpaCenterFAQ(models.Model):
spa_centers = models.ManyToManyField('SpaCenter', blank=True)
class SpaCenterFAQLanguage(models.Model):
ENGLISH = '1'
LANGUAGE_CHOICES = ((ENGLISH, 'english'),)
faq = models.ForeignKey(SpaCenterFAQ)
faq_question = models.CharField(max_length=200)
faq_answer = models.TextField()
faq_language = models.CharField(max_length=2,
choices=LANGUAGE_CHOICES,
default=ENGLISH
from django.contrib import admin
from .models import *
class SpaCenterFAQLanguageInlineAdmin(admin.TabularInline):
model = SpaCenterFAQLanguage
class SpaCenterFaqAdmin(admin.ModelAdmin):
inlines = SpaCenterFAQLanguageInlineAdmin,
class SpaCenterAdmin(admin.ModelAdmin):
pass
admin.site.register(SpaCenter, SpaCenterAdmin)
admin.site.register(SpaCenterFAQ, SpaCenterFaqAdmin)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.