当我使用以下命令设置多个唯一字段时UniqueConstraint:
class Meta:
constraints = (models.UniqueConstraint(fields=['student', 'classroom', 'code'], name='student_classroom_code'))
Run Code Online (Sandbox Code Playgroud)
并运行python manage.py makemigrations引发此错误:
TypeError: 'UniqueConstraint' object is not iterable
Run Code Online (Sandbox Code Playgroud)
这有什么问题吗?
当我想从中创建新对象时,product出现此错误:
slugify() got an unexpected keyword argument 'allow_unicode'
这是我的模型:
class BaseModel(models.Model):
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True,)
slug = models.SlugField(null=True, blank=True, unique=True, allow_unicode=True, max_length=255)
class Meta:
abstract = True
class Product(BaseModel):
author = models.ForeignKey(User)
title = models.CharField()
# overwrite your model save method
def save(self, *args, **kwargs):
title = self.title
# allow_unicode=True for support utf-8 languages
self.slug = slugify(title, allow_unicode=True)
super(Product, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
我也为其他应用程序(博客)运行了相同的模式,但我没有遇到这个问题。 这个应用程序有什么问题吗?
我在 django 中有这个模型:
class FotherModel(models.Model):
# Some fields goes here!
class Meta:
# Some fields goes here!
abstract = True
class ChildModel(FotherModel):
# Some fields goes here!
class Meta(FotherModel.Meta):
#s Some fields goes here!
Run Code Online (Sandbox Code Playgroud)
当我们从Django模型的元类继承一个字段时,该字段出现在子元类中,但这条规则不适用于abstract=True.
我知道如果发生这种情况,数据库中不会创建任何表,但我不知道这种继承是如何没有发生的。请为我解释一下这个过程。
我想将列表元素作为分隔的字符串传递给value方法。这是我的主要查询:
resumes = JobRecord.objects.all().values('field1','field2','field3','field4')
Run Code Online (Sandbox Code Playgroud)
我要发送此列表方法,而不是JobRecord model在values方法中写入my的每个字段values:
fields_LIST =['field1', 'field2', 'field3', 'field4']
Run Code Online (Sandbox Code Playgroud)
如何将list的元素作为单独的字符串传递给method?
提示
我测试了这些解决方案,但是没有一个响应:
1:
str(fields_LIST) # result: "['field1', 'field2', 'field3', 'field4']"
Run Code Online (Sandbox Code Playgroud)
2:
str1 = ''
for item in fields_LIST:
str1 += '\'' + item + '\'' + ',' # result: "'field1','field2','field3','field4',"
Run Code Online (Sandbox Code Playgroud)
方式3:
通过列表本身:
JobRecord.objects.all().values(fields_LIST) # result: Error :'list' object has no attribute 'split'
Run Code Online (Sandbox Code Playgroud)
第4种:
str1 = ','.join(str(e) for e in fields_LIST) # result: 'field1, field2, field3, field4'
Run Code Online (Sandbox Code Playgroud)
研究 我没有研究这个资源和问题:1, …