python - Django admin inline 有 2 个指向同一模型的外键

标签 python django django-models django-admin

目前我的传输模型如下:

class Transfers(models.Model):
    class Meta:
        db_table = "transfers"
        verbose_name = 'Transfer'
        verbose_name_plural = 'Transfers'
user = models.ForeignKey("backend.User", null=True, blank=True, related_name='user_transfer', on_delete=models.CASCADE)

to_account = models.ForeignKey("backend.User", null=True, blank=True, related_name='user_transfer_to_account', on_delete=models.SET_NULL)

传输对象需要从一个用户传输到另一个用户,因此我需要使用相同的用户模型

在我的 admin.py 中:

class TransfersInline(admin.StackedInline):
    model = Transfers

    can_delete = False
    extra = 0
    max_num=0

    form = TransfersAdminForm

class UserAdminCustom(admin.ModelAdmin):

    exclude = ('password', 'last_login', 'is_superuser', 'is_staff', 'groups',
               'user_permissions', 'username', 'first_name', 'last_name', 'is_active', 'date_joined')

    inlines = [
        TransfersInline,
    ]

    def get_queryset(self, request):
        qs = super(UserAdminCustom, self).get_queryset(request)
        return qs.filter(is_staff=False)

    def get_readonly_fields(self, request, obj=None):
        return ('id', 'created', 'modified')


admin.site.register(User, UserAdminCustom)

在我的管理员中,我想显示内联传输,该用户存在于Transfers模型的user字段中,但内联不能对同一模型有多个外键:

<class 'backend.admin.TransfersInline'>: (admin.E202) 'backend.Transfers' has more than one ForeignKey to 'backend.User'

我的问题是如何仅使 TransfersInline 使用 user 字段中的外键而不是 to_account 字段? (内联转账将包含用户在用户字段中的所有转账对象)

最佳答案

TransfersInline 类使用 fk_name='user' 选项。

You can check the docs

关于python - Django admin inline 有 2 个指向同一模型的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59837619/

相关文章:

Python 类型错误 : can only concatenate list (not "int") to list for Parkes error grid

Python:追加列表实际上并没有追加它?

python - Django新手试图让treeio在apache后面工作

python - 如何存储需要在不同用户之间共享的敏感信息?

python - 如何在 Django 的 ImageField 路径中设置变量?

python - 为什么我的 FOR 循环返回 6 个结果而不是 1 个

python - 链接pytest装置

django - Django 中的 MVC 模式

python - 如何避免Django子线程被uWSGI respawn杀死

python - Django 表单错误 : Select a valid choice. 该选项不是可用选项之一