Python 如何在Django Admin中格式化OneToOne关系?

Python 如何在Django Admin中格式化OneToOne关系?,python,django,admin,models,Python,Django,Admin,Models,我有两个通过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, bla

我有两个通过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都能在数据库中将问题模型连接到它。这就是为什么我使用一对一的关系。从这里开始,我不知道如何在admin.py中表示这种关系,因此当我通过admin查看数据库时,我会看到每个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中添加或更改什么,以便每个问题模型都通过OneTONE关系连接到其父用户文本模型?

您只需调用正确的相关字段即可

如果您在问题管理界面内,则需要将用户\u文本添加到表单中:

@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
    ...
    fields = ('user_text', ...)
如果您在UserText管理界面内,则可以使用:


顺便说一句,OneToOneField类似于具有unique=True的ForeignKey,换句话说,每个用户只能有一个问题。如果用户可以有多个问题,您应该切换到外键。

我相信可能有一个有用的方法可以帮助您。@Neelik这为我指明了正确的方向,谢谢。我想我是从这里得到的!我已经使用了内联方法,它可以像我想要的那样工作。我确实希望每个UserText都有多个与之相关的问题,使用ForeignKey是否需要更改内联管理代码?好的,很酷。现在我想把每个问题分配给UserText管理界面中的一个OneToMany问题实例。现在,管理员为每个用户文本显示多个问题字段堆叠成一行,从这里我如何将每个问题添加到每个单独的内联字段?我想我不理解你的问题,但是现在对于每个问题,你需要添加一个内联ie,如果用户有三个问题,应该有三个内联。你只需要内联添加一个问题,就会自动与该用户关联。我认为这是正确的。这些内联线是否在您前面提到的列表中:内联线=[QuestionInLine,…]?我该怎么称呼他们呢?比如,我会在这3个假设性问题的列表中添加什么问题?我会做一个单独的问题并将其链接到您,这样您就可以理解我所说的。在评论中很难解释
class QuestionInline(admin.TabularInline):
    model = Question

@admin.register(UserText)
class UserTextAdmin(admin.ModelAdmin):
    ...
    inlines = [QuestionInline, ]