gpt4 book ai didi

django - Django admin 中的自 Action 者

转载 作者:行者123 更新时间:2023-12-03 17:59:53 25 4
gpt4 key购买 nike

全部。我正在为我的 django 站点管理管理员,但遇到了障碍。

我有一个 Entry模型和 Related模型。 Related模型有两个外键字段:一个到 Entry模型( entry )和一个到 django 的 User模型 ( author )。 Related模型被认为是 Entry 的“子模型”模型,每个用户只能拥有一个 RelatedEntry .

在管理员中,RelatedEntry 内联编辑.据我所知,管理员只显示了一个额外的 Related一次,它会自动填充 author当前用户的字段:

from django.contrib import models
from django.contrib.auth.models import User

class Entry(models.Model):
pass

class Related(models.Model):
entry = models.ForeignKey(Entry)
author = models.ForeignKey(User)
class Meta:
unique_together = ('entry', 'author')




from django.contrib import admin

class RelatedInline(admin.StackedInline):
model = Related
exclude = ('author',)
max_num = 1

class EntryAdmin(admin.ModelAdmin):
inlines = (RelatedInline,)
def save_formset(self, request, form, formset, change):
instances = formset.save(commit=False)
for instance in filter(lambda obj: isinstance(obj, Related), instances):
if instance.__dict__.get('author', None) is None:
instance.author = request.user
instance.save()
formset.save_m2m()

问题是,如果用户想要编辑已经有 Related 的条目。任何人,那么只会显示一个相关的字段。

如果可能,我想知道是否有人对我如何保持与此类似的设置有任何想法,但让管理员自动显示用户的 related如果它存在,如果不存在则为空表单。除此以外,我会去掉这条线 max_num = 1并将其替换为 extra = 1 .当然,这意味着即使用户已经拥有当前条目的“新相关”表单,也会显示“新相关”表单,所以我想知道是否有人知道我如何捕获可能的 IntegrityError并让用户知道发生了错误。

最佳答案

事实证明这很简单。你只需要添加一个 queryset功能到您的 RelatedInline类,指定要显示的内联。如果返回的查询集至少有一个成员,则将显示第一个。如果查询集为空,将显示一个空白的内联!

class RelatedInline(admin.StackedInline):
model = Related
exclude = ('author',)
max_num = 1

def queryset(request):
return Related.objects.filter(author = request.user)

关于django - Django admin 中的自 Action 者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3781898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com