- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在运行 Django 1.1,无法让“limit_choices_to”选项让我的 ManytoManyField 正常工作。
我有两个模型:
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)
和
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()
在第二个模型中,我想确保在 Django 管理中,多重选择字段中显示的唯一“unlocked_photos”(“MemberPhoto”对象)是那些具有相同“member”值(User 对象)的对象作为“锁定”对象的“用户”(也是一个用户对象)。
我以为我已经遵循了 Django 文档,但它不起作用。我收到以下错误:
TemplateSyntaxError
Caught an exception while rendering: invalid input syntax for integer: "user"
我尝试将“limit_choices_to”更改为:
limit_choices_to = {'member': user} --- 不起作用
limit_choices_to = {'member__username':'kyle'} --- 这确实有效,但没用,我只是手动指定用户名
我怎样才能从当前的“锁定”对象中获取用户并通过该对象过滤 MemberPhoto“成员”属性?
感谢任何可以提供帮助的人。
凯尔
最佳答案
我在这个链接中找到了一个完全符合我想要的答案:Django MTMField: limit_choices_to = other_ForeignKeyField_on_same_model? ,我在这里为遇到同样问题的人发布我的工作代码。环顾四周看来,“limit_choices_to”可能根本无法实现我想要的,而自定义管理员使用的表单是可行的方法:
from django.contrib import admin
from django import forms
from gayhop.apps.locking.models import lock
from gayhop.apps.photos.models import MemberPhoto
class LockAdminForm(forms.ModelForm):
class Meta:
model = lock
def __init__(self, *args, **kwargs):
super(LockAdminForm, self).__init__(*args, **kwargs)
self.fields['unlocked_photos'].queryset = MemberPhoto.objects.filter(member=self.instance.user)
class LockAdmin(admin.ModelAdmin):
form = LockAdminForm
filter_horizontal = ('unlocked_photos',)
django.contrib.admin.site.register(lock, LockAdmin)
您需要更改的是:
希望这对某人有帮助!
关于Django: "limit_choices_to"不适用于 ManyToManyField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7133455/
我是一名优秀的程序员,十分优秀!