2

というモデルを持つアプリケーションがありますVerifications。次のようなフィールドがあります:asset_code、Status、Location、Emp_idなど。django管理パネルから「検証の追加」を使用して検証を追加できます。ただし、重複する asset_code エントリの追加を制限したい (asset_code が既に存在する場合)。

class Verification(models.Model):
    asset_code = models.CharField(verbose_name="Asset Code",max_length=16, default="")
    scan_time = models.DateTimeField(verbose_name="Time of smartDNA scan",auto_now_add=True,default=datetime.datetime.now)
    credential = models.CharField(verbose_name="smartDNA Credential",max_length=16, default="")
    status = models.IntegerField(verbose_name="Scanning Status",choices=STATUS_CHOICES,default=1)
    operator = models.CharField(verbose_name="Operator",max_length=16, default="")
    location = models.CharField(verbose_name="Branch",max_length=64, default="")
    auth_code = models.CharField(verbose_name="Scanner Authentication",max_length=20, default="DSC(Verisign")
    emp_id = models.CharField(verbose_name="EMP ID",max_length=16, default="")
    image = models.CharField(verbose_name="Image",max_length=24, default="dd")
    created = models.DateTimeField(verbose_name="Created on",blank=True,auto_now_add=True)
    modified = models.DateTimeField(verbose_name="Modified on",blank=True,auto_now=True)
    product_details = models.CharField(verbose_name="Product Details",max_length=64, default="")

ステータス フィールドには、1 ~ 10 の値を指定できます。

asset_code が既に存在し、status=1 の場合、モデルにエントリを追加しないようにするにはどうすればよいですか?

4

2 に答える 2

7

フィールド定義unique=Trueに追加asset_code

アップデート:

管理者のみ:

admin.py

from django import forms

class VerificationAdminForm(forms.ModelForm):
    class Meta:
        model = Verification

    def clean_asset_code(self):
        asset_code = self.cleaned_data['asset_code']
        if Verification.objects.filter(asset_code=asset_code).exists():
            raise forms.ValidationError("This asset code already exist.")
        return asset_code

class VerificationAdmin(admin.ModelAdmin):
    form = VerificationAdminForm
于 2013-11-27T12:20:37.557 に答える