我有以下模型:
class Person(models.Model):
short_name = models.CharField(max_length=64)
long_name = models.CharField(max_length=64)
,我的格式如下:
class PersonForm(forms.ModelForm):
class Meta:
model = Person
fields = ['short_name', 'long_name']
现在我正在使用此表单进行更新和创建。
如果有人尝试创建具有相同short_name和long_name的Person,我希望此表单引发ValidationError。
但是,如果用户正在修改现有用户的数据,我不想引发异常。
我曾想过要编写一个干净的方法来检查Person.objects.filter(long_name=X, short_name=Y).count()
是否返回任何内容,但是当我修改现有实例时,这种情况会错误地失败。
您将如何更改?
答案 0 :(得分:1)
您可以通过在模型级别使用here in the django documentation如图所示的unique_together
来完成此操作
答案 1 :(得分:1)
现有实例是具有get_transient()
值的实例。因此,只需在您的get_transient()
方法中进行检查即可:
SELECT * FROM $wpdb->options WHERE option_name LIKE '_transient_active_user_%'