我在Django应用中保存表单时遇到问题。我想从另一个名为'image'的模型中创建一个名为'dataset'的模型,这两个模型都是mptt模型。
模型
class Image(MPTTModel):
name = models.CharField(max_length=50, unique=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
def __unicode__(self):
return self.name
class Dataset(MPTTModel):
name = models.CharField(max_length=50, unique=True)
image = TreeForeignKey(Image, null=True, blank=True, unique=True, related_name='image')
def __unicode__(self):
return self.name
class MPTTMeta:
parent_attr = 'image'
当我尝试保存数据集时,出现完整性错误:
IntegrityError at /associate/
column image_id is not unique
Request Method: GET
Request URL: http://127.0.0.1:8000/associate/
Django Version: 1.6.2
Exception Type: IntegrityError
Exception Value:
column image_id is not unique
Exception Location: C:\Python27\lib\site-packages\django\db\backends\sqlite3\base.py in execute, line 450
views.py
def index(request):
images = Image.objects.all()
datasets = []
for i in images:
if i.rank() >= 3:
dataset = Dataset(image=i, name=i.name)
dataset.save()
datasets.append(dataset)
return render(request, 'associate/index.html', {'datasets':datasets})
def learn(request):
if request.method == 'POST':
try:
dataset = request.POST.get('dataset', False)
model = Dataset.objects.get(name=dataset)
if model:
print model.name
else:
print "no model"
except Dataset.DoesNotExist:
return render(request, 'associate/index.html')
else:
return render(request, 'associate/learn.html', {'dataset':model})
答案 0 :(得分:1)
图像字段的数据集模型中有唯一= True。这意味着您无法将一个图像分配给不同的数据集实例。但是你在索引中正在做它。在索引中,您每次都尝试为每个图像创建一个新数据集。但是,如果已经创建了具有此图像的数据集 - 您将获得此“列image_id不唯一”错误。请检查您的应用程序逻辑,并删除unique = True或重写行为。