Reputation: 1
I'm attempting to develop a 10Rows and 10Columns (textfield) model in Django for one user so that he can add data via a form. Is there a way to make it dynamic? In the future, I may need to add 50 rows and 50 columns.
I try to do manually its so long to do
imageNo_1 = models.CharField(max_length=50,blank=True,null=True)img_desc_1 = models.CharField(max_length=500,blank=True,null=True)
img_desc_2 = models.CharField(max_length=500,blank=True,null=True)
img_desc_3 = models.CharField(max_length=500,blank=True,null=True)
img_desc_4 = models.CharField(max_length=500,blank=True,null=True)
img_desc_5 = models.CharField(max_length=500,blank=True,null=True)
img_desc_6 = models.CharField(max_length=500,blank=True,null=True)
img_desc_7 = models.CharField(max_length=500,blank=True,null=True)
img_desc_8 = models.CharField(max_length=500,blank=True,null=True)
img_desc_9 = models.CharField(max_length=500,blank=True,null=True)
img_desc_10 = models.CharField(max_length=500,blank=True,null=True)
.
.
.
img_alt_1 = models.CharField(max_length=500,blank=True,null=True)
img_alt_2 = models.CharField(max_length=500,blank=True,null=True)
img_alt_3 = models.CharField(max_length=500,blank=True,null=True)
img_alt_4 = models.CharField(max_length=500,blank=True,null=True)
img_alt_5 = models.CharField(max_length=500,blank=True,null=True)
img_alt_6 = models.CharField(max_length=500,blank=True,null=True)
img_alt_7 = models.CharField(max_length=500,blank=True,null=True)
img_alt_8 = models.CharField(max_length=500,blank=True,null=True)
img_alt_9 = models.CharField(max_length=500,blank=True,null=True)
img_alt_10 = models.CharField(max_length=500,blank=True,null=True)
Upvotes: 0
Views: 35
Reputation: 1
I understand what you are trying to do, but I think a better solution is to use more Models.
for example, you can made the Model "Image" and have only 3 fields:
image = models.CharField(max_length=50,blank=True,null=True)
img_desc = models.CharField(max_length=255,blank=True,null=True)
img_alt = models.CharField(max_length=255,blank=True,null=True)
Then another Model (Join Table) between User and Image:
class UserImage(models.Model):
image= models.ForeignKey("Image", on_delete=models.CASCADE)
user= models.ForeignKey("User", on_delete=models.CASCADE)
Another tip: Charfield contains at least 255 characters, so use TextField if you want more.
Upvotes: 0
Reputation: 1
I found answer:
for rowthirty in range(1, 31): locals()[f"imageNo_{rowthirty}"] = models.CharField(max_length=50,blank=True,null=True)
locals()[f"img_desc_{rowthirty}"] = models.CharField(max_length=500,blank=True,null=True)
locals()[f"img_alt_{rowthirty}"] = models.CharField(max_length=500,blank=True,null=True)
Upvotes: 0