簡體   English   中英

django:創建 model object 時出現外鍵問題

[英]django: foreign key issues when creating a model object

我正在嘗試將一行數據寫入數據庫,並以表格形式收集數據。 我需要使用兩個外鍵,其中一個導致創建失敗,盡管我無法弄清楚原因:

這是我的 model:

def upload_path(instance,file):
    file_dir = Path(file).stem
    print('usr',instance.user.id)
    path = '{}/{}/{}/{}'.format(instance.user.id,"projects",file_dir,file)

    return path


class BuildingFilesVersions(models.Model):
    version_id = models.AutoField(primary_key=True)
    building_id = models.ForeignKey(Building, on_delete=models.CASCADE,related_name='building_id_file')
    user = models.ForeignKey(Building, on_delete=models.CASCADE,related_name="user_file")
    created_at = models.DateTimeField(auto_now_add=True, blank=True)
    description = models.TextField(max_length=200, blank=True, null=True)
    modification_type = models.CharField(choices=WORK_TYPE_CHOICES, max_length=200, blank=True, null=True)
    filename = models.CharField(max_length=200, blank=True, null=True)
    file = models.FileField(upload_to=upload_path, null=True, blank=True)

這是我的觀點:

@login_required
@owner_required
def RegisterFileView(request,pk):
    form = AddBuildingFileForm()
    if request.method == 'POST':
        form = AddBuildingFileForm(request.POST,request.FILES)
        if form.is_valid():
            description = form.cleaned_data["description"]
            modification_type = form.cleaned_data["modification_type"]
            filename = form.cleaned_data["modification_type"]
            file =  request.FILES['file'].name

            BuildingFilesVersions.objects.create(building_id_id=pk,
                                                 user_id=request.user,
                                                 description=description,
                                                 modification_type=modification_type,
                                                 filename=filename,
                                                 file=file)

            return redirect('home')
        else:
            form = AddBuildingFileForm()
    context = {'form':form}
    return render(request, 'building_registration/register_file.html', context)

讓我感到困惑的是,錯誤是Field 'building_id' expected a number but got <SimpleLazyObject: <User: Vladimir>>即使pk返回正確的 building_id

誰能看到我搞砸的地方?

要訪問外鍵的 ID 添加雙下划線

BuildingFilesVersions.objects.create(building_id=Building.objects.get(pk=pk),
                                                 user=request.user,
                                                 description=description,
                                            modification_type=modification_type,
                                                 filename=filename,
                                                 file=file)
  • 您的用戶必須登錄才能在 Model 中分配他
  • 類似問題的答案

查看文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM