本文主要是介绍django admin 写XxxxxAdmin时的一些偷懒行为:以tuple的形式返回所有属性(也可以自定义数量),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
Model 部分
Admin部分
Model 部分
class Language(models.Model):"""语言"""id = models.AutoField(primary_key=True, blank=False)language_name = models.CharField('语言名称', default='', max_length=50)inuse = models.BooleanField(default=True, verbose_name='是否正在使用')users = models.BigIntegerField('使用人口数量', default=0)use_time = models.IntegerField('使用时长(年)', default=0)origin = models.CharField('起源地', max_length=200, default='')# ancient_civilization = models.ForeignKey(AncientCivilization)explain = models.TextField('语言介绍', default='', max_length=2000)user = models.ForeignKey(UserInfo, on_delete=models.SET_NULL, related_name='language_operator', verbose_name='操作人',to_field='id',null=True)create_time = models.DateTimeField('生成时间', default=timezone.now)modify_time = models.DateTimeField('修改时间', auto_now=True) # 使用Model.save()来更新才会更新注意def __str__(self, print_all=False): # 定义打印对象时打印的字符串if print_all:# return ' '.join(('%s' % item for item in self.__dict__.values()))return str(self.__dict__)else:return self.language_name
Admin部分:
1:10这个10代表着Language这个model属性的数量,以tuple的形式返回属性的元组,这样就不用手动将属性一个一个copy过来了,当然了这样也将不方便Main 和 Advance,以及控制显示属性的数量。
class LanguageAdmin(admin.ModelAdmin):obj = Language()list_display = tuple(obj.__dir__()[1:10])readonly_fields = ('create_time', 'modify_time',)list_display_links = ('language_name',)search_fields = ('id', 'language_name', 'user')admin.site.register(Language, LanguageAdmin)
这篇关于django admin 写XxxxxAdmin时的一些偷懒行为:以tuple的形式返回所有属性(也可以自定义数量)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!