আমি জানি এটি একটি পুরানো প্রশ্ন, তবে আমার একইরকম একটি সমস্যা হয়েছিল এবং আমি একটি কার্যকর সমাধান পেয়েছি:
আমার নিম্নলিখিত ক্লাস ছিল:
class CommonInfo(models.Model):
image = models.ImageField(blank=True, null=True, default="")
class Meta:
abstract = True
class Year(CommonInfo):
year = models.IntegerField()
তবে আমি চেয়েছিলাম যে সুপারক্লাসের চিত্রের ক্ষেত্রটি নালামযোগ্য রাখার সময় বছরের উত্তরাধিকার সূত্রে প্রাপ্ত চিত্রের ক্ষেত্রটি প্রয়োজন। শেষ পর্যন্ত আমি বৈধতার পর্যায়ে চিত্রটি প্রয়োগ করতে মডেলফর্মগুলি ব্যবহার করেছি:
class YearForm(ModelForm):
class Meta:
model = Year
def clean(self):
if not self.cleaned_data['image'] or len(self.cleaned_data['image'])==0:
raise ValidationError("Please provide an image.")
return self.cleaned_data
প্রশাসক.পি:
class YearAdmin(admin.ModelAdmin):
form = YearForm
দেখে মনে হচ্ছে এটি কেবল কিছু পরিস্থিতিতে (প্রচ্ছন্ন ক্ষেত্রে আপনাকে কঠোর নিয়মগুলি প্রয়োগ করার দরকার আছে) এর জন্য কেবল এটি প্রযোজ্য।
বিকল্পভাবে আপনি এর clean_<fieldname>()
পরিবর্তে পদ্ধতিটি ব্যবহার করতে পারেন clean()
, উদাহরণস্বরূপ, যদি কোনও ক্ষেত্রটি town
পূরণ করার প্রয়োজন হয়:
def clean_town(self):
town = self.cleaned_data["town"]
if not town or len(town) == 0:
raise forms.ValidationError("Please enter a town")
return town