python - Create new record with the self rererenced Foreignkey relation -
below models.py , made self reference foreignkey relationship.
class emp_details(models.model): emp_id = models.autofield(primary_key = true) emp_first_name = models.charfield(max_length = 50,null = false) emp_manager_id = models.foreignkey('self') a1 = emp_details(emp_first_name = "ramesh",emp_manager_id = 2) a1.save()
here trying create new record. got following error:
valueerror: cannot assign "'2'": "emp_details.emp_manager_id" must "emp_details" instance.
how can create new record self rererenced foreignkey relation?
in case, emp_manager_id
foreign key field, should assign id emp_manager_id_id
.
a1 = emp_details(emp_first_name = "ramesh", emp_manager_id_id=2)
it better change field name emp_manager
. note it's recommended use camelcase model name, empdetail
better emp_details
. putting together, have:
class empdetail(models.model): emp_id = models.autofield(primary_key = true) emp_first_name = models.charfield(max_length = 50,null = false) emp_manager = models.foreignkey('self')
now emp_manager
foreign key, can assign id emp_manager_id
.
a1 = empdetail(emp_first_name="ramesh", emp_manager_id_id=2)
if want set emp_manager
object itself, need save object database first, gets primary key.
a1 = empdetail(emp_first_name="ramesh") a1.save() a1.emp_manager = a1 # 'a1.emp_manager_id = a1.id' instead a1.save()
for work, you'll need set null=true
on foreign key can save object without setting emp_manager
.
emp_manager = models.foreignkey('self', null=true)
Comments
Post a Comment