Sandeep - it's best to report bugs as tickets. Anyway, I checked this out for you and I don't see the problem. I started a project, and added the code you suggested as models, ran makemigrations, and saw this error:
$ ./manage.py makemigrations core SystemCheckError: System check identified some issues: ERRORS: core.Child.view: (fields.E311) 'View.field' must be unique because it is referenced by a foreign key. HINT: Add unique=True to this field or add a UniqueConstraint (without condition) in the model Meta.constraints. After adding primary_key=True as Alexandru suggests, the migration created successfully: $ ./manage.py makemigrations core Migrations for 'core': example/core/migrations/0001_initial.py - Create model View - Create model Child The migration looks correct: # Generated by Django 4.0.3 on 2022-04-05 15:40 from django.db import migrations, models import django.db.models.deletion class Migration(migrations.Migration): initial = True dependencies = [] operations = [ migrations.CreateModel( name="View", fields=[ ( "field", models.CharField(max_length=4, primary_key=True, serialize=False), ), ], options={ "db_table": "view", "managed": False, }, ), migrations.CreateModel( name="Child", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "view", models.ForeignKey( db_constraint=False, on_delete=django.db.models.deletion.CASCADE, to="core.view", ), ), ], ), ] On Sun, Apr 3, 2022 at 6:23 PM Alexandru M. <alexaho...@gmail.com> wrote: > Does it behave the way you're expecting it to behave if you declare field > as models.CharField(max_length=4, primary_key=True)? > > On Saturday, 26 March 2022 at 15:45:39 UTC+2 sandeep...@gmail.com wrote: > >> class View(models.Model): >> field = models.CharField(max_length=4) >> class Meta: >> managed=False >> db_table = 'view' #database view >> >> class Child(models.Model): >> view = models.ForeignKey(View, on_delete=models.CASCADE, >> to_field='field', db_constraint=False) >> >> makemigrations on above will have the *view* field of type integer while >> it should be varcher(4) >> >> This is my first post to the forum. Please inform if something is amiss. >> >> Thank You >> > -- > You received this message because you are subscribed to the Google Groups > "Django developers (Contributions to Django itself)" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to django-developers+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-developers/a08d95ee-7707-4ef6-bf7a-df77b0b81726n%40googlegroups.com > <https://groups.google.com/d/msgid/django-developers/a08d95ee-7707-4ef6-bf7a-df77b0b81726n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/CAMyDDM1wk7APHXm5davXw_zDUWN%3Dt9XY7762OuRcbFo9h431RA%40mail.gmail.com.