Djangoでは、別のモデルへの外部キーを持つ説明付きのイメージを表すモデルがあります。このモデルはStdImageFieldを使用してイメージを保存し、サムネイルを自動作成します。このモデルには、画像のタイプを表す2つのオプションがある選択フィールドもあります。Django StdImageはプロキシモデルを使用しても動作しません
私の管理者はこのモデルをメインモデルのインラインとして示していますが、私はこのモデルを管理者の2つの別個のインラインとして表示したいと思います私は2つのプロキシモデルを使用して、それらを代わりに登録しています。
問題は、私がこのプロキシモデルを使用すると、StdImageFieldはアップロードされた画像のサイズを変更したり、サムネイルを作成したりしないということです。私はこれが原因問題に私のコードは、(目的のためにストリップダウン)以下れるhere
に記載されていると信じて:ジャンゴから
models.py
from django.db import models
from stdimage import StdImageField
class MainModel(models.Model):
some_field = models.CharField(max_length = 2)
class SomeModel(models.Model):
SOME_MODEL_TYPE_CHOICES = (
('t1','Type 1'),
('t2','Type 2'),
)
main_model = models.ForeignKey(to='MainModel')
pic = StdImageField(upload_to='img', size =(200,200), thumbnail_size = (100,100))
pic_type = models.CharField(max_length = 2, choices = SOME_MODEL_TYPE_CHOICES)
class SomeModelT1Manager(models.Manager):
def get_query_set(self):
return super(SomeModelT1Manager, self).get_query_set().filter(pic_type='t1')
class SomeModelT1(SomeModel):
objects = SomeModelT1Manager()
class Meta:
proxy = True
def save(self, *args, **kwargs):
if not self.pk:
self.pic_type = 't1'
super(SomeModelT1, self).save(*args,**kwargs)
class SomeModelT2Manager(models.Manager):
def get_query_set(self):
return super(SomeModelT2Manager, self).get_query_set().filter(pic_type = 't2')
class SomeModelT2(SomeModel):
objects = SomeModelT2Manager()
class Meta:
proxy = True
def save(self, *args, **kwargs):
if not self.pk:
self.pic_type = 't2'
super(SomeModelT2, self).save(*args, **kwargs)
admin.py
.contrib
import admin
from test_app.models import *
class SomeModelT1Inline(admin.StackedInline):
model = SomeModelT1
exclude = ('pic_type',)
class SomeModelT2Inline(admin.StackedInline):
model = SomeModelT2
exclude = ('pic_type',)
class MainModelAdmin(admin.ModelAdmin):
inlines = [
SomeModelT1Inline,
SomeModelT2Inline
]
admin.site.register(MainModel, MainModelAdmin)
私の質問はそこにありますこれを行う別の方法またはstdimageでこの問題を修正する方法私は、DjangoのFileFieldにかのImageFieldがないようしかし、それは唯一の野生の推測だ問題はdjango documentation for custom model fields
で説明したように__metaclass__
がmodels.SubfieldBase
に設定されていない主な理由は、ときにプロキシのコンテキストでcontribute_to_class
がStdImageFieldで呼び出されることは決してありませんということができると思いどちらかを設定してください。任意のデバッグせずにただの推測
これでいくつかのサンプルコードを提供できますか? – armonge
上記の編集を参照してください。失敗したら私を責めないでください:O –
sendメソッドはインスタンスパラメータを含むことができず、受信側デコレータにはkwargs引数が必要です。 – armonge