﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
35694	FK inconsistency beween `get_or_create` and any other orm function	KIC		"While any orm `filter`, `get`, ... accepts a `pk` or instance `get_or_create` does not. For consistency `get_or_create` should also be able to handle instances and pk's interchangeably.


models.py:
{{{
from django.db import models


class A(models.Model):
    foo = models.CharField(max_length=100)


class B(models.Model):
    a = models.ForeignKey(A, on_delete=models.CASCADE)
    bar = models.CharField(max_length=100)

}}}

tests.py
{{{
from testing.utils import TestCase
from zfoo import models


class TestSomething(TestCase):
    def test_lala(self):
        a = models.A.objects.create(foo=""foo"")
        models.B.objects.create(a=a, bar=""bar"")

        self.assertEqual(models.B.objects.get(a=a), models.B.objects.get(a=a.pk))
        self.assertEqual(
            models.B.objects.filter(a=a).first(),
            models.B.objects.filter(a=a.pk).first(),
        )

        models.B.objects.get_or_create(dict(bar=""does not exist""), bar=""baz"", a=a)
        models.B.objects.get_or_create(dict(bar=""does not exist""), bar=""baz"", a=a.pk)  # FAILS
}}}"	Cleanup/optimization	closed	Database layer (models, ORM)	5.1	Normal	invalid			Unreviewed	0	0	0	0	0	0
