![](/img/trans.png)
[英]Unable to autopopulate a Django admin field using an attribute from a OneToOne relationship
[英]How to format OneToOne Relationship in Django Admin?
我有2個通過OneToOneField關系連接的模型。 這是他們的樣子:
class UserText(models.Model):
user_input = models.CharField(max_length=2000)
class Question(models.Model):
user_text = models.OneToOneField(
UserText,
on_delete=models.CASCADE,
blank=True,
null=True,
)
user_questions = models.CharField(max_length=2000)
我希望每個UserText在數據庫中都將Questions模型連接到它。 這就是為什么我使用OneToOne關系。 從這里開始,我不知道如何在admin.py中表示這種關系,因此當我通過admin查看數據庫時,我會看到每個UserText模型及其相關的Question。 到目前為止,這是我的admin.py外觀:
from django.contrib import admin
from v2.models import UserText
from v2.models import Question
@admin.register(UserText)
class UserTextAdmin(admin.ModelAdmin):
model = UserText
display = ('user_input')
@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
model = Question
display = ('user_questions')
我需要在admin.py中添加或更改什么,以便每個問題模型都通過OneToOne關系連接到其父UserText模型?
您只需要調用正確的相關字段即可。
如果您在Question Admin界面中,則需要將user_text
添加到表單中:
@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
...
fields = ('user_text', ...)
如果您位於UserText管理界面中,則可以使用內聯 :
class QuestionInline(admin.TabularInline):
model = Question
@admin.register(UserText)
class UserTextAdmin(admin.ModelAdmin):
...
inlines = [QuestionInline, ]
順便說一句,一個OneToOneField
類似於一個ForeignKey
unique=True
的ForeignKey
,換句話說,每個用戶只能有一個問題。 如果用戶有多個問題,則應切換到ForeignKey
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.