选择过期日期字段

2024-09-28 22:20:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个expiredate字段,它是基于registerdate字段自动生成的

我尝试了一个常规的查询,就像我将用于任何字段一样(如下所述)

这是模型:

class UserProfile(models.Model):
    course = models.ForeignKey(Category, on_delete=models.DO_NOTHING)
    phonenumber = models.CharField(max_length=50)
    registerdate = models.DateTimeField()
    expiredate = timezone.now().date() + timedelta(days= 70)
    user = models.OneToOneField(User, on_delete = models.CASCADE)

def __str__(self):
    return "{}" .format(self.user)

这是我试图使用的查询:

expire = UserProfile.objects.values('expiredate')

我只想选择expiredate并在我的views.py函数中使用它,但查询生成了一个错误:

'Cannot resolve keyword 'expiredate' into field. Choices are: course, course_id, id, phonenumber, registerdate, user, user_id'

Tags: 模型selfidmodelonmodelsdelete常规
2条回答

@katoozi的解决方案强制默认值保持不变,直到应用程序重新启动。你知道吗

使用callable获取正确的值:

def get_expiredate():
    return timezone.now().date() + timedelta(days= 70)

class UserProfile(models.Model):
    expiredate = models.DateField(default=get_expiredate)

看看How to set a Django model field's default value to a function call / callable (e.g., a date relative to the time of model object creation)

expiredate可以是DateField。你知道吗

class UserProfile(models.Model):
    expiredate = models.DateField(default=timezone.now().date() + timedelta(days= 70))

python manage.py makemigrations

python manage.py migrate

相关问题 更多 >