1

特定のフィールドを指定するモデルがあります。

class Upload_files(models.Model):
    title           =models.CharField(max_length=100, blank=True , null=True)
    image           =models.ImageField(upload_to='images')
    attributes      =models.ForeignKey(Product_attributes, blank=True , null=True)
    value           =models.CharField(max_length=100, blank=True , null=True)
    price           =models.CharField(max_length=100, blank=True , null=True)

    def __unicode__(self):
            return unicode(self.id)

ここで、3つのフィールド(アップロードID、属性ID、および値)のみを持つ別のテーブルを作成します。これらのフィールドは、上記のテーブルの値、つまり、upload_id、上記で選択した属性、および値を取得する必要があり、管理パネルからのみ読み取ることができます。

次のコードを使用しました

class Product_values(models.Model):
    product         =models.ForeignKey(Upload_files, blank=True , null=True)
    attributes      =models.ForeignKey(Product_attributes, blank=True , null=True)
    value           =models.CharField(max_length=100, blank=True , null=True)
    def __unicode__(self):
            return unicode(self.product)

私が言ったように機能しないことは知っていますが、どうすればそれを行うことができますか?そのため、upload_filesモデルで定義すると、値と属性フィールドはデフォルトで値を取ります。

編集

管理パネルからupload_filesモデルに値を挿入すると、アップロードされたファイルのインスタンスが、前に定義したアップロードID、属性、および値を使用して別のテーブルに作成されるようにしたいと思います。

4

1 に答える 1

1

post_save シグナルを使用し、次のように Product_values エントリを作成するレシーバー関数を記述して接続します。

def create_product_entry(sender, instance, created, **kwargs):
    # enter your code here

post_save.connect(create_product_entry, sender=Upload_files)
于 2012-10-08T09:37:07.650 に答える