【发布时间】:2014-12-26 09:25:00
【问题描述】:
我有这个小 models.py 文件:
models.py
# -*- coding: utf-8 -*-
import datetime
from django.db import models
from django.contrib.auth.models import User
from apps.strumento.models import Strumento, Veicolo
class AllegatoStrumento(models.Model):
allegato = models.FileField(upload_to='uploads_strumento/', blank=True, null=True)
data_creazione = models.DateTimeField(default=datetime.datetime.now)
creatore = models.ForeignKey(User)
strumento = models.ForeignKey(Strumento)
class Meta:
verbose_name_plural = "Allegati strumenti"
verbose_name = "Allegato strumento"
def __unicode__(self):
return str(self.allegato)
我希望“creatore”字段自动填充触发保存/更新操作的登录用户,以便我可以显示它但不允许直接更改它。
当然,只是将这样的 User FK 放入模型中,它会询问我要放入哪个用户,这是我不希望发生的。
这两行我都试过了:
creatore = models.ForeignKey(User, default=request.user.get_username())
creatore = models.ForeignKey(User, default=User.get_username())
但它们都不起作用,因为第一个错过了 request 的实例,而第二个抱怨该方法是 NOT (已更正,感谢@bruno desthuilliers)被调用在一个实例上(“TypeError: 未绑定的方法 get_username() 必须以用户实例作为第一个参数调用(什么都没有)”)
有什么简单的方法可以做到这一点?
【问题讨论】: