No django - existe um campo de carimbo de data / hora padrão para todos os objetos? Ou seja, eu tenho que declarar explicitamente um campo 'timestamp' para 'criado em' no meu modelo - ou há uma maneira de fazer isso de forma automática?
fonte
No django - existe um campo de carimbo de data / hora padrão para todos os objetos? Ou seja, eu tenho que declarar explicitamente um campo 'timestamp' para 'criado em' no meu modelo - ou há uma maneira de fazer isso de forma automática?
Não existe tal coisa por padrão, mas adicionar um é super fácil. Basta usar o auto_now_add
parâmetro na DateTimeField
classe:
created = models.DateTimeField(auto_now_add=True)
Você também pode usar auto_now
para um campo 'atualizado em'. Verifique o comportamento auto_now
daqui .
Por auto_now_add
aqui .
Um modelo com ambos os campos terá a seguinte aparência:
class MyModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
Automagicamente não soa como algo que django faria por padrão. Não forçaria você a exigir um carimbo de data / hora.
Eu construiria uma classe base abstrata e herdaria todos os modelos dela se você não quiser se esquecer do timestamp / fieldname, etc.
class TimeStampedModel(models.Model):
created_on = models.DateTimeField(auto_now_add=True)
class Meta:
abstract = True
Não parece muito para importar em wherever.TimeStampedModel
vez dedjango.db.models.Model
class MyFutureModels(TimeStampedModel):
....
model_utils
para Django que já contémTimeStampedModel
, mas se você não precisa de mais nada deste pacote, apenas mantenha-o sem peso extra.created
eupdated
. Esta é uma ótima maneira de fazer isso de forma limpa.Se você estiver usando extensões django (que é um bom aplicativo para adicionar funcionalidade ao auxiliar de linha de comando django-admin.py), você pode obter esses campos de modelo gratuitamente herdando de seu TimeStampedModel ou usando seus campos de TimeStamp personalizados
fonte
Você pode tentar extensões django
se você quiser usar um modelo abstrato de carimbo de data / hora
Possui outros modelos abstratos. você pode usar isso também.
fonte
Se você quiser ser capaz de modificar este campo, defina o seguinte em vez de
auto_now_add=True:
Para Data
Para DateTime
fonte
Acho que iria com
Eu preciso de alguns esclarecimentos sobre como usar
fonte