• Ironhide
    2021-05-26
    为什么调用函数就不加括号呢?不加括号返回的是函数地址,加括号是调用函数得到返回值,所以以我现在的理解应该加括号。这块不是很理解,希望老师多解释一下。

    作者回复: 没加括号是引用函数的地址,这个地址可以另外调用,可以动态调用。函数式编程的特点

    共 2 条评论
    1
  • Geek_1905
    2020-10-19
    在save_model里面获取user给creator,其user修改时会成为新的“creator”

    作者回复: 感谢反馈,这个地方的逻辑不够严谨,更严谨一点,是需要区分创建还是修改的。

    共 2 条评论
    1
  • liao89
    2020-10-23
    老师你好, 1. 请问下verbose_name="创建日期",和verbose_name=_("创建日期")这两种写法的区别? 2. 为什么我的修改时间不会随着我修改内容而修改,一直是创建时间。 3. 我在创建职位里面的文本输入框非常小,岗位职责和任职要求的那两栏。

    作者回复: 1.仓库里的代码用的_,这个import 的 gettext_lazy 函数,这个函数用来根据 key 取到指定的语言对应的 文本内容,从而对不同语言展现不同内容。 后面的多语言部分会降到多语言的使用。 2.修改时间更新的逻辑要加到代码里面。save_model 里面加一下。 3.这两个字段你用的什么类型?

    共 2 条评论
    
  • 头发茂密
    2020-10-19
    老师您好,这节我遇到一个问题。在添加 list_display 里面的参数以后,有报错,我查询解决未果,请您帮忙看一下。 error logs: django.core.management.base.SystemCheckError: SystemCheckError: System check identified some issues: ERRORS: <class 'pro1.admin.JobAdmin'>: (admin.E108) The value of 'list_display[0]' refers to 'job_name', which is not a callable, an attribute of 'JobAdmin', or an attribute or method on 'pro1.Job'. System check identified 1 issue (0 silenced). class Job(models.Model): job_type = models.SmallIntegerField(blank=False, choices=JobTypes, verbose_name="职位类别") jon_name = models.CharField(max_length=250, blank=False, verbose_name="职位名称") job_city = models.SmallIntegerField(choices=Cities, blank=False, verbose_name="工作地点") job_reponsibility = models.TextField(max_length=1024, verbose_name="职位职责") job_requirement = models.TextField(max_length=1024, blank=False, verbose_name="职位要求") creator = models.ForeignKey(User, verbose_name="创建人", on_delete=models.CASCADE) # 此处使用models.CASCADE 是为解决 models.SET_NULL 出现的报错 create_data = models.DateTimeField(verbose_name="创建日期", default=datetime.now) modified_data = models.DateTimeField(verbose_name="修改时间", default=datetime.now) class JobAdmin(admin.ModelAdmin): exclude = ('creator', 'create_data', 'modified_data') list_display = ('job_name', 'job_type', 'job_city', 'creator', 'create_data', 'modified_data') def save_model(self, request, obj, form, change): # 保存前操作 obj.creator = request.user super().save_model(request, obj, form, change)
    展开

    作者回复: model里面的 job_name拼写检查一下

    共 2 条评论
    
  • 魁星
    2020-10-16
    这里两个时间都使用default 生成时间,看 Django 文档,可以自动设置。 创建日期,使用 auto_now_add ,可以自动在创建时指定当前时间并使用了默认时区 created_date = models.DateTimeField(verbose_name="创建日期", auto_now_add=True) 修改日期,使用 auto_now,可以自动在模型保存时更新时间并使用了默认时区 modified_date = models.DateTimeField(verbose_name="修改日期", auto_now=True) 不过当前实现里, auto_new 和 auto_new_add 会设置 editable=False 和 blank=True,也就无法手动编辑吧
    共 2 条评论
    18
  • 金金金
    2020-11-11
    觉得老师讲的还不错,不算生硬。建议:那些觉得生硬的小伙伴,可以在django官方文档上找一下解释,再去理解你觉得生硬的点,你就会发现一下子就通了,目前我就是这样做的。最初大家都是这样,不知道这个方法为啥这样使用,就知道抄写过来,然后觉得很难懂,但是真理解了就觉得他是一个纸老虎~毕竟二十多分钟老师讲不出来各种细节,学编程,需找答案是我觉得最开心的事了。
    
    7
  • 苜蓿林
    2021-08-18
    修改项目之后,修改时间又不会变
    
    2
  • 齐航
    2022-02-09
    我有点不明吧,为啥加了jobadmin 以后,creator 里面就有了默认值?
    
    1
  • HHVM
    2021-05-13
    自动保存函数黎的super()方法,是那里来的啊?
    共 2 条评论
    1
  • 坐看云起时
    2021-04-03
    在02:00的时候,说要给 admin 也加一个 默认值,但是视频没有演示,此时如果你自己加了default=User.username 给 creator,然后继续跟着做,就会在 makemigrations 遇到下面的错误: ValueError: Cannot serialize: <django.db.models.query_utils.DeferredAttribute object at 0x106d61160> There are some values Django cannot serialize into migration files. 花了很多时间调试, 终于发现(自己傻),这是因为 Django 没法 在 makemigrations 时得到 User.username 作为默认值呀! 理论上是可以设置呀,因为实际上当页面运行时,肯定是有 当前 登录的 用户 的 User.username 的呀!你makemigrations 为啥这么较真儿?! 难道给 Creator 设置个默认值还不容易? 可惜这个还真不容易,最后 找到很多方法,觉得最好的是 stackoverflow 上的这两个方法(2018年的回答。。。),大家看情况使用吧 https://stackoverflow.com/questions/937954/how-do-you-specify-a-default-for-a-django-foreignkey-model-or-adminmodel-field 麻烦在那个页面搜索 『you can set the default for a ForeignKey field in two different ways』,就是我推荐的那个回答,具体就不赘述了。 当然,如果你没有加 default=User.username ,跟着视频做是不会有问题的,也不会像我这样自讨苦吃了。。。
    展开
    共 1 条评论
    1