Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 将登录用户与照片模型关联_Django_Django Models - Fatal编程技术网

Django 将登录用户与照片模型关联

Django 将登录用户与照片模型关联,django,django-models,Django,Django Models,我基本上想通过使用models.ForeignKey将登录的用户名与PhotoModel关联起来。我在admin.py中重写了safe_模型,但是当我执行views.py类PhotoCreateNew(视图)时,它会在print(form)处停止,并且表单未被验证(if form.is_valid())跳过了整个部分,该部分本应将请求.user设置为photo.user_name,并返回空模板 我的模特 class Photo(models.Model): user_name = models

我基本上想通过使用
models.ForeignKey
将登录的用户名与PhotoModel关联起来。我在admin.py中重写了safe_模型,但是当我执行views.py类PhotoCreateNew(视图)时,它会在
print(form)
处停止,并且表单未被验证(
if form.is_valid()
)跳过了整个部分,该部分本应将
请求.user
设置为
photo.user_name
,并返回空模板

我的模特

class Photo(models.Model):
user_name =  models.ForeignKey(User, on_delete=models.CASCADE)
PLACES = (('RD','研发-R&D'),('Warehouse','仓库-Warehouse'),('Gate','门卫处-Gate Guard'),('SecondFloor','2F生产部'))
photo = models.FileField()
photo_name = models.CharField(max_length=20)
date = models.DateField(auto_now="True")
quantity = models.CharField(max_length=4)
CONDITIONS = (('N','NG'), ('G', 'GOOD'))
condition =models.CharField(max_length=1,choices=CONDITIONS)
place = models.CharField(max_length=30,choices=PLACES,default='Warehouse')

def __str__(self):
    return self.photo_name
def get_absolute_url(self):
    return reverse('photo:photo_detail', kwargs={'pk':self.pk})

class PhotoForm(ModelForm):
class Meta:
    model = Photo
    fields =['user_name','photo','photo_name','quantity','condition','place']
    exclude= ('user_name',)
我的admin.py:

from django.contrib import admin
from photo.models import Photo
from photo.models import Supplier
class PhotoAdmin(admin.ModelAdmin):

def save_model(self, request, obj, form, change):
    if not obj.pk:
        obj.user_name = request.user
    obj.save()


admin.site.register(Supplier,)
admin.site.register(Photo, PhotoAdmin)
My views.py:

class PhotoCreateNew(View):
form_class = PhotoForm
template_name = 'photo/photo_form.html'


def get(self, request):
    form =self.form_class(None)
    return render(request, self.template_name, {'form':form})

def post(self,request):
    form = self.form_class(request.POST)
    print(request.user)
    print(form)
    if form.is_valid():  # uploader has been excluded. No more error.
        print("Przeszlo")
        photo = form.save(commit=False)  # returns unsaved instance
        photo.user_name = request.user
        print(request.user)
        photo.save()  # real save to DB.

        return redirect('photo:photo_detail')
    return render(request,self.template_name,{})

在使用request.POST和request.FILES初始化表单类之后,它正在工作。 我必须替换:

form = self.form_class(request.POST)
与:

form = self.form_class(request.POST, request.FILES)

打印
form.errors
。另外,共享
request.POST
的内容。是否确实要覆盖管理中的save\u模型。这在views.py中不会有任何影响。您不想覆盖模型中的save方法吗?@SachinKukreja form.errors是:
  • 照片
    • 此字段是必需的。
    和request.POST内容是:@ger.s.brett我在文档中看到它将在admin.py中被覆盖,但我不知道我是否做对了