Проблема с формами и фотологом - PullRequest
0 голосов
/ 22 июня 2011

Я использую Pinax для создания нового проекта. Для этого проекта мне нужно было создать новое приложение «Бизнес», которое во многом похоже на профили, но они хотели, чтобы все было для бизнеса отдельно.

Я пытаюсь, чтобы администратор смог изменить логотип или «аватар» для бизнес-профиля. Я использую класс ImageModel из Photologue для управления загрузкой изображений и т. Д., Но я столкнулся с проблемой. При прохождении формы форма проходит и перенаправляет, но изображение фактически не обновляется. Когда вы проходите через администратора django, изображение загружается нормально.

Если кто-то может взглянуть и посмотреть, если чего-то не хватает, я слишком долго на него смотрю, поэтому мне нужна свежая пара глаз.

Business Models.py

class Business(models.Model):
name = models.CharField(verbose_name="Name", max_length=140)
desc = models.TextField(verbose_name="Description", null=True, blank=True)
bus_type = models.CharField(verbose_name="Business Type", choices=BUSINESS_TYPES, max_length=20)
location = models.CharField(_("location"), null=True, blank=True, max_length=200)
website = models.URLField(_("website"), null=True, blank=True, verify_exists=False)
created_by = models.ForeignKey(User, related_name="Created By")
admin = models.ManyToManyField(User, related_name="Admin User", null=True, blank=True)
followers = models.ManyToManyField(User, related_name="Followed by", null=True, blank=True)
date_added = models.DateField(verbose_name="Date Added")

class Meta:
    verbose_name = "Business"
    verbose_name_plural = "Businesses"

def __unicode__(self):
    return self.name

class BusinessLogo(ImageModel):
business = models.ForeignKey(Business, related_name="Business Association")

Мои views.py

@login_required
def changeLogo(request, bus_id):
user = request.user
b = get_object_or_404(Business, pk = bus_id)
if request.method == 'POST':
    form = ChangeLogoForm(request.POST, request.FILES, instance = b)
    if form.is_valid():
        biz_logo = form.save(commit=False)
        biz_logo.save()

        return HttpResponseRedirect('/')

else:
    form = ChangeLogoForm()

return render_to_response('business/changelogo.html',
                        {'user': user, 'form':form, 'b':b}, context_instance=RequestContext(request))

Forms.py

class ChangeLogoForm(ModelForm):
class Meta:
    model = BusinessLogo

def save(self, force_insert=False, force_update=False, commit=True):
    f = super(ChangeLogoForm, self).save(commit=False)
    if commit:
        f.save()
        print "form save method was called with commit TRUE"
    return f

И, наконец, мой changelogo.html

...
{% block body %}
<h1>Change Logo</h1>
<form method="POST" action="" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Upload">
</form>

{% endblock %}
...

Спасибо всем за внимание.

Steve

1 Ответ

0 голосов
/ 22 июня 2011

Модель ChangeLogoForm имеет значение BusinessLogo, но при вызове ее конструктора вы передаете ему экземпляр Business:

b = get_object_or_404(Business, pk = bus_id)
...
form = ChangeLogoForm(request.POST, request.FILES, instance = b)

(И вам, вероятно, следует использовать поле OneToOneField вместо ForeignKey)

...