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

时间:2017-02-20 16:24:56

标签: 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,
        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模型?

1 个答案:

答案 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