Gautam Mandewalker
Gautam Mandewalker

Reputation: 343

Django models: Fields name clashes

I am facing an error in one of my Django practice projects.

Following are my apps and respective models:

Project name: django03

app: home

home/model.py

from __future__ import unicode_literals

from django.db import models
from django.conf import settings
# Create your models here.

User = settings.AUTH_USER_MODEL

HOME_TYPE = (
    ('1','1'),
    ('2','2'),
    ('3','3'),
)


class Home(models.Model):
    home_owner = models.ForeignKey(User,null=False, verbose_name='Owner')
    hometype= models.CharField(max_length=100, null=False, default=1, 
choices=HOME_TYPE, verbose_name='Home Type')
    licenseid= models.CharField(max_length=200, null=False, unique=True, 
verbose_name='License ID')
archive = models.BooleanField(default=False)

def __str__(self):
    return self.licenseid

app: furniture furniture/model.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.conf import settings
from django.db import models

# Create your models here.

User = settings.AUTH_USER_MODEL

FURNITURE_DATA_IMPORT_SOURCE= (
    ('0', '0'),
    ('1', '1'),
    ('2', '2'),
)

class Furniture(models.Model):
    furniture_owner = models.ForeignKey(User, verbose_name='User')
    furniture_imported_via = models.CharField(max_length=200, default="0", null=False, choices=FURNITURE_DATA_IMPORT_SOURCE, verbose_name='Source of import')
    furniture_title = models.CharField(max_length=100, null=False, verbose_name='Furniture title')
    furniture_description = models.TextField(max_length=250, verbose_name='Furniture description')
    archive = models.BooleanField(default=False)

    def __str__(self):
        return self.furniture_title

app:mappings mappings/model.py

from __future__ import unicode_literals

from django.db import models
from home.models import Home
from furniture.models import Furniture

class HomeFurnitureMapping(models.Model):
    home = models.OneToOneField(
        Home,
        on_delete=models.CASCADE,
        null=False,
        unique=True,
        verbose_name='Home'
    )
    furniture = models.OneToOneField(
        Furniture,
        on_delete=models.CASCADE,
        null=False,
        unique=True,
        verbose_name='Furniture'
    )

app: furnitureupdates furnitureupdates/model.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models
from mappings.models import HomeFurnitureMapping
# Create your models here.

class FurnitureUpdate(models.Model):
    mapping_id = models.OneToOneField(
        HomeFurnitureMapping,
        on_delete=models.CASCADE,
        null=False,
        unique=True,
        verbose_name='Mapping ID'
         )
    update_status = num_pages = models.IntegerField(null=False, default=1)
    update_date = models.DateField(auto_now_add=True, null=False, verbose_name='Update date')
    update_time = models.TimeField(auto_now_add=True, null=False, verbose_name='Update time')

    def __str__(self):
        return self.mapping_id

When I try to migrate the FurnitureUpdate model, I get the following error:

ERRORS:
furnitureupdates.FurnitureUpdate.num_pages: (models.E006) The field 'num_pages' clashes with the field 'num_pages' from model 'furnitureupdates.furnitureupdate'.

I am not understanding from where the num_pages field is appearing. Please guide me, how to resolve this issue.

Upvotes: 0

Views: 1326

Answers (1)

binpy
binpy

Reputation: 4194

You need to update this;

update_status = num_pages = models.IntegerField(null=False, default=1)

to

update_status = models.IntegerField(null=False, default=1)

or;

num_pages = models.IntegerField(null=False, default=1)

Upvotes: 1

Related Questions