相关疑难解决方法(0)

如何在Django ModelForm中过滤ForeignKey选项?

说我的我有以下内容models.py:

class Company(models.Model):
   name = ...

class Rate(models.Model):
   company = models.ForeignKey(Company)
   name = ...

class Client(models.Model):
   name = ...
   company = models.ForeignKey(Company)
   base_rate = models.ForeignKey(Rate)
Run Code Online (Sandbox Code Playgroud)

即有多个Companies,每个都有RatesClients.每个都Client应该有一个Rate从它的父级Company's Rates而不是另一个基础中选择的基础Company's Rates.

在创建用于添加a的表单时Client,我想删除Company选项(因为已经通过Company页面上的"添加客户端"按钮Rate选择了该选项)并且还将选择限制为该选项Company.

我如何在Django 1.0中解决这个问题?

我目前的forms.py文件只是样板文件:

from models import *
from django.forms import ModelForm

class ClientForm(ModelForm):
    class Meta:
        model = Client
Run Code Online (Sandbox Code Playgroud)

views.py也是基本的:

from django.shortcuts …
Run Code Online (Sandbox Code Playgroud)

python django django-forms

218
推荐指数
4
解决办法
13万
查看次数

Django:"limit_choices_to"在ManyToManyField上不起作用

我正在运行Django 1.1并且无法获取我的ManytoManyField的"limit_choices_to"选项.

我有两个型号:

class MemberPhoto(ImageModel):
    title       = models.CharField(_('title'), max_length=255, blank=True, null=True)
    caption     = models.CharField(_('caption'), max_length=255, blank=True, null=True)
    date_added  = models.DateTimeField(_('date added'), default=datetime.now, editable=False)
    member      = models.ForeignKey(User)

    def __unicode__(self):
        return u'%s (%s)' % (self.member.username, self.id)
Run Code Online (Sandbox Code Playgroud)

class lock(models.Model):
    user = models.ForeignKey(User, related_name="owner")
    to_user = models.ForeignKey(User, related_name="to_user")
    unlocked_photos = models.ManyToManyField(MemberPhoto, blank=True, null=True, limit_choices_to = {'member':'user'})
    objects = locking_manager()
Run Code Online (Sandbox Code Playgroud)

在第二个模型中,我想确保在Django的管理员中,在多个选择字段中呈现的唯一"unlocked_photos"("MemberPhoto"对象)是具有"成员"值(用户对象)的那些与"锁定"对象的"用户"(也是一个用户对象).

我以为我已经遵循了Django文档,但它不起作用.我收到以下错误:

TemplateSyntaxError

Caught an exception while rendering: invalid input syntax for integer: "user"
Run Code Online (Sandbox Code Playgroud)

我已经尝试将"limit_choices_to"改为:

limit_choices_to = {'member':user} ---不起作用

limit_choices_to = {'member__username':'kyle'} ---这可行,但它没用,我只是手动指定用户名

我怎样才能从当前的"锁定"对象中获取用户并按此过滤MemberPhoto"member"属性? …

django admin limit-choices-to manytomanyfield

5
推荐指数
2
解决办法
6072
查看次数