如何基于重写Django管理表单Foreignkey请求.us

2024-10-01 22:25:46 发布

您现在位置:Python中文网/ 问答频道 /正文


在管理员py在

class PromoAdmin(admin.modelAdmin)
      list_display = ( 'name', 'id', 'category', 'promo_type', 'store', 'brand', 'date_start' )
      form = SampleForm

在表单.py在

^{pr2}$

请求时出错

Django版本:1.3.1 异常类型:TypeError 异常值:
init()至少有2个参数(给定1个)


Tags: storenamepyidadmin管理员typedisplay
1条回答
网友
1楼 · 发布于 2024-10-01 22:25:46

不能用初始化存储字段请求.用户在字段声明中。您可以尝试以下操作:

class MyAwesomeForm(forms.ModelForm):
    store = forms.ModelChoiceField(Store.objects)
    class Meta:
       model = Promo

def __init__(self, user, *args, **kwargs):
    super(MyAwesomeForm, self).__init__(*args, **kwargs)
    self.fields['store'].queryset = Store.objects.filter(owner=user)

在实例化窗体时,可以传递请求.用户对象。在

^{pr2}$

如果您想在管理中实现这一点,您可以尝试this 因为在管理员中只提供与登录用户相关的对象,所以可以覆盖模型管理员.queryset功能:

^{3}$

请注意,只有在促销模型中存储了外键字段时,store yuu owner才起作用:

class Promo(models.Model):
    store = models.ForeignKey(Store)

class Store(models.Model):
    owner = models.ForeignKey(User)

我假设也可以通过某种方式将请求传递到表单的init方法。但没有找到合适的方法来做。在

相关问题 更多 >

    热门问题