У меня есть несколько вещей о сохранении вошедшего в систему пользователя, save_model () и save_formset () из модели Admin Джанго, о котором я хотел бы спросить.
Учтите, что у меня есть модель, которая делает фотографию, которую пользователь загружает через http POST.
In models.py:
class photo(models.Model):
title = models.CharField(max_length=50)
img = models.ImageField(upload_to='photocollection')
uploader = models.ForeignKey(User)
latitude = models.FloatField(null=True, blank=True)
longitude = models.FloatField(null=True, blank=True)
def save(self):
#Retain the model instance to do some processing before saving:
self.latitude = exif.getGPSLatitude(self.img)
self.longitude = exif.GPSLongitude(self.img)
return super(photoCollection, self).save()
class photoForm(ModelForm):
class Meta:
model = photo
Тогда в моих взглядах. Py:
def upload(request):
form = photoForm(request.POST, request.FILES)
if form_is_valid():
#do something useful
form.save()
Здесь у меня интересный сценарий. Форма в my views.py недопустима, так как поле ['uploader'] в моделях никогда не обновляется, и это обязательное поле, поэтому оно не будет сохранено.
1) Как получить форму для проверки?
Также при сохранении формы я видел сообщение здесь , в котором рассказывается, как сохранить ForeignKey (Пользователь) с помощью save_model () в modelAdmin. Я попытался переопределить это, как показано в ссылке, создав класс photoAdmin в моем admin.py:
class photoAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
if not change:
obj.uploader = request.user
obj.save()
но он все еще не может сохранить поле загрузчика с request.user или request.user.username. Я также попытался переопределить save_formset (), так как я использую photoForm в моем views.py. По-прежнему безрезультатно.
2) Когда на самом деле вызываются save_model () и save_formset ()?
3) В чем разница между save_formset () и save_model ()?
4) Будут ли вызваны save_model () или save_formset (), когда я просто вызову form.save () в views.py выше?
5) Что плохого в моем подходе как в проверке формы в views.py, так и в сохранении поля загрузчика с request.user, и как мне это исправить? Некоторые примеры кодов будут очень полезны.
Я прочитал документы Django на Административный сайт , но они не совсем отвечают на мои вопросы. Любое просветление будет с благодарностью.