0

私はPinaxを使用して新しいプロジェクトを作成しています。このプロジェクトでは、プロファイルによく似た新しいアプリ「ビジネス」を作成する必要がありましたが、ビジネス用にすべてを分離したいと考えていました。

管理者がビジネスプロフィールのロゴまたは「アバター」を変更できるようにしようとしています。PhotologueのImageModelクラスを使用して画像のアップロードなどを制御していますが、問題が発生しました。フォームを通過するとき、フォームは通過してリダイレクトされますが、画像は実際には更新されません。django adminを通過すると、画像は正常にアップロードされます。

誰かが何かが足りないかどうかを見てみることができれば、私はそれをずっと見つめているので、新鮮な目が必要です。

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 %}
...

ご覧いただきありがとうございます。

スティーブ

4

1 に答える 1

0

ChangeLogoFormモデルはですがBusinessLogo、コンストラクターを呼び出すときにBusinessインスタンスを渡します。

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

(そして、おそらくのOneToOneField代わりにフィールドを使用する必要がありますForeignKey

于 2011-06-22T18:20:22.180 に答える