1
장고의 비품/자연 키에 문제가 있습니다. this answer에 지정된 것과 같은 대부분의 일반적인 문제를 해결했다고 생각합니다.Django 자연 키가 조명기에서 작동하지 않습니까?
>>> artifact = Artifact.objects.get_by_natural_key('PP_0772')
>>> artifact
<Artifact: PP_0772: Test Artifact>
무엇 내가 설비와 잘못하고 있어요 : get_by_natural_key 쉘에서 잘 작동으로
이 모두가 붉은 청어 될 수 있을까요?
장고 1.6
models.py
...
class ArtifactManager(models.Manager):
def get_by_natural_key(self, code_number_):
return self.get(code_number=code_number_)
class Artifact(models.Model):
def __unicode__(self):
return self.code_number + ": " + self.title
def natural_key(self):
return (self.code_number,)
objects = ArtifactManager()
title = models.CharField(max_length = 100, default = 'Untitled')
code_number = models.CharField('Code Number',
max_length = 10, unique = True)
class Picture(models.Model):
def __unicode__(self):
return self.artifact.code_number + ": " + self.title
def get_file_name(self):
return basename(self.image.name)
def upload_path(instance, image_name):
output = settings.MEDIA_ROOT + '/uploads/' + image_name
return output
image = models.ImageField(upload_to = upload_path, max_length=100,
blank=False, null=False)
artifact = models.ForeignKey('Artifact', blank=False, null=False)
title = models.CharField(max_length = 100, default = 'Primary',
blank=True, null=True)
...
내 고정 : pictures.yaml
- pk: 1
model: collection.picture
fields:
image: /Users/me/images/image.jpg
artifact: PP_0772
title: A great image
- pk: 2
model: collection.picture
fields:
image: /Users/me/images/another_image.jpg
artifact: PP_0775
title: A terrific image
...
오류
,536,913 내가./manage.py loaddata pictures
를 실행할 때
그래서, 내가 얻을 :
DeserializationError: Problem installing fixture 'pictures.yaml':
[u"'PP_0772' value must be an integer."]
자연스러운 키를 간단한 문자열로 덤프 할 수 있지만 터플/목록으로 다시로드해야한다는 것은 이상합니다. 이것을 알아 내서 고마워! – tbm
당신을 환영합니다! – allanberry