LearnerMT
LearnerMT

Reputation: 1

How to create Django model of 10 rows and 10 columns for one id(primary)

wanted like this 10x10

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)
imageNo_2 = models.CharField(max_length=50,blank=True,null=True)
imageNo_3 = models.CharField(max_length=50,blank=True,null=True)
imageNo_4 = models.CharField(max_length=50,blank=True,null=True)
imageNo_5 = models.CharField(max_length=50,blank=True,null=True)
imageNo_6 = models.CharField(max_length=50,blank=True,null=True)
imageNo_7 = models.CharField(max_length=50,blank=True,null=True)
imageNo_8 = models.CharField(max_length=50,blank=True,null=True)
imageNo_9 = models.CharField(max_length=50,blank=True,null=True)
imageNo_10 = 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

Answers (2)

LordNikon27
LordNikon27

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

LearnerMT
LearnerMT

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

Related Questions