limit_choices_to:
from django.db import models
from django.contrib.auth.models import User
from django.db.models import Q
class Book(models.Model):
name = models.CharField(max_length=20)
user = models.ForeignKey(User, limit_choices_to={‘is_staff’: True})
#user = models.ForeignKey(User, limit_choices_to=Q(is_staff=True))
def __unicode__(self):
return self.name
>>>Book.objects.filter(user=u)
>>>User.objects.filter(Book__name__startswith=’hhh’)
limit_choices_to可以使用字典的形式来表示,也可以用Q来表示,如上实例所示。
但是当使用Q的形式来表示时,那么用到limit_choices_to的字段就不要出现在raw_id_fields中,否则将会失效。而字典的形式照常生效。
class BookAdmin(admin.ModelAdmin):
list_display = [‘id’, ‘name’, ‘user’]
raw_id_fields = (‘user’,)
admin.site.register(Book, BookAdmin)
这样的话,limit_choices_to的作用就会失效。
related_name:
当一张表的多个字段指向同一张表时,会出错。系统无法知道,通过另外一张表,访问XXX_set属性访问到的是哪个属性。这时,我们就需要为每个字段定义一个related_name属性,另外一张表访问这个表时,就会根据related_name的值来得到各个属性了。
例子:
- class dutyTeam(models.Model):
- ””’
- 这里必须定义related_name属性。
- ”’
- first=models.ForeignKey(watch,verbose_name=‘第一值班人’,related_name=‘first’)
- second=models.ForeignKey(watch,related_name=‘second’,verbose_name=‘备用值班人’)
- urgent=models.ForeignKey(watch,related_name=‘urgent’,verbose_name=‘紧急联系人’)
当定义了related_name后”_set”这类查询就被related_name代替了,所以用”_set”会报错。
如果related_name=‘+’或者以‘+’结束:‘user+’,那么就无法实现逆向查询了。
参数 | 描述 |
---|---|
edit_inline | 若取值非假, 这个关联对象就是可内联编辑的.这也意味着这个对象没有自己的管理界面.取值可以是 |
limit_choices_to |
一个参数和值的字典(参阅`数据库API参考`_)用来限制 admin 针对该对象的可选项. 使用models.LazyDate limit_choices_to = {'pub_date__lte' : models.LazyDate()} 只允许关联对象的pub_date在当前日期之前的才可以被选择. 本参数与 |
max_num_in_admin |
对内联编辑对象来说,这是在 amdin 中可显示的关联对象的最大值. 这样, 如果说一只比萨饼最多加10种浇头,那么 这并不说是比萨斜塔只有十层高…比萨斜塔是可以有更多层的.这个参数仅仅控制admin界面. |
min_num_in_admin | 在admin中显示的关联对象的最小值. 正常情况,在创建阶段显示 |
num_extra_on_change | 在编辑阶段显示的额外的空白关联对象字段数. |
num_in_admin | 在添加一个对象时显示的其内联对象的默认数量 |
raw_id_admin |
为即将得到的整数值(id值)显示一个文本框而不是一个下拉菜单. 在关联对象有很多很多行时.使用它就比使用一个 不能与 |
related_name |
关系名字. 举例来说, 如果 models.ForeignKey(Pizza) related_name 不过若你在 models.ForeignKey(Pizza, related_name="munchie") 则 只有当一个对象要被另一个对象关联不止一次时, 这个参数才真正有用. 举例来说, 如果一个Story models.ForeignKey(Category, related_name="primary_storys") models.ForeignKey(Category, related_name="secondary_storys") …这样 |
to_field | 被关联对象的用于关联的字段. 默认情况, Django 使用被关联对象的主键 |
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/37320.html