我有两个通过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中表示这种关系,这样当我通过管理员查看我的数据库时,我看到每个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模型?
答案 0 :(得分:0)
您只需要调用正确的相关字段。
如果您在问题管理界面内,则需要将import numpy as np
_, numbers = np.unique(names, return_inverse=True)
print(numbers)
# [3 3 2 2 1 1 1 0 3]
添加到表单中:
user_text
如果您位于UserText管理界面内,则可以使用inlines:
@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
...
fields = ('user_text', ...)
顺便说一下,class QuestionInline(admin.TabularInline):
model = Question
@admin.register(UserText)
class UserTextAdmin(admin.ModelAdmin):
...
inlines = [QuestionInline, ]
与OneToOneField
类似ForeignKey
,换句话说,每个用户只能有一个问题。如果用户可以有多个问题,您应该切换到unique=True
。