如何在 Django Admin 中格式化 OneToOne 关系?
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 都在数据库中连接到它的问题模型。这就是我使用 OneToOne 关系的原因。从这里开始,我不知道如何在我的 admin.py 中表示这种关系,因此当我通过管理员查看我的数据库时,我会看到每个 UserText 模型及其连接的问题。这是我 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 模型?
您只需要调用正确的相关字段即可。
如果您在问题管理界面中,您需要将 user_text
添加到您的表单中:
@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
...
fields = ('user_text', ...)
如果您在 UserText 管理界面中,您可以使用 inlines:
class QuestionInline(admin.TabularInline):
model = Question
@admin.register(UserText)
class UserTextAdmin(admin.ModelAdmin):
...
inlines = [QuestionInline, ]
顺便说一句,OneToOneField
类似于 ForeignKey
和 unique=True
,换句话说,每个用户只能有一个问题。如果用户有多个问题,你应该切换到 ForeignKey
.
我有 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 都在数据库中连接到它的问题模型。这就是我使用 OneToOne 关系的原因。从这里开始,我不知道如何在我的 admin.py 中表示这种关系,因此当我通过管理员查看我的数据库时,我会看到每个 UserText 模型及其连接的问题。这是我 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 模型?
您只需要调用正确的相关字段即可。
如果您在问题管理界面中,您需要将 user_text
添加到您的表单中:
@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
...
fields = ('user_text', ...)
如果您在 UserText 管理界面中,您可以使用 inlines:
class QuestionInline(admin.TabularInline):
model = Question
@admin.register(UserText)
class UserTextAdmin(admin.ModelAdmin):
...
inlines = [QuestionInline, ]
顺便说一句,OneToOneField
类似于 ForeignKey
和 unique=True
,换句话说,每个用户只能有一个问题。如果用户有多个问题,你应该切换到 ForeignKey
.