π Space Reviewers πΎ Episode 6
Published July 12, 2025
This video features Raffaella and Tim at Djangonaut Space 2026 .
Raffaella and Tim review the Django 5.2 release candidate and talk about the features they are excited about
More information can be found at https://github.com/djangonaut-space/space-reviewers/blob/main/Episode-4/new-features-5.2.md
To learn more about Djangonaut Space π and how to launch your own mission to contribute to the Django ecosystem, visit us at https://djangonaut.space
Links:
Follow π Djangonaut Space π
Django 5.2 introduces several changes that the presenters test against a real project. The development server can warn when it is being run in production, with an environment variable available to suppress the warning. Test responses gain a `.text` property, removing the need to decode `response.content` manually, and the shell can automatically import models and other useful objects, with the imports configurable and overridable by applications. They also examine the new command system support for selecting system checks, including database-dependent checks. These checks are not run by default because they access databases, but custom management commands can opt into them, making commands such as deployment or health checks more useful. The presenters conclude that the response-text change is their favourite improvement, while automatic shell imports should make interactive development less repetitive, and they briefly note other Django 5.2 work such as composite primary keys.
Summarised automatically from the transcript.
Automatically transcribed, so expect mistakes in names and technical terms.
Speaker 1: Today I think we're um we make um different episode because uh during the last uh previous episode we made some uh uh some review from for the PR but today we are going to see what's uh uh what's going to be in uh Django 5. 2 And we choose some uh summer uh of new uh some something new that is going to be in uh jungle uh in Django Fifu too. Do you want to add something?
Speaker 2: Um, I think it might be worthwhile us taking a quick peek at like how large the release notes are and why we're picking out specific things, but
Speaker 1: Oh, this this one?
Speaker 2: Yeah, yeah, this page. Yeah. Yeah. Every time, like whenever I upgrade Django versions and like I come through here, it's always a little daunting because there are lots of changes.
Speaker 1: And also deprecation at the end, I think.
Speaker 2: Yeah, that's it. Yes, that that's probably the most important part, yeah. Yeah, it's usually like open it up and scroll down to see like what what do I all have to change? Um Yeah.
Speaker 1: There's a lot, but we I think we choose uh uh four. The first one is uh the um uh The uh the warning inside the the the warning one This one a warning and displaying red run server Um the one this one is um because of the uh now we've going to have text instead of the code uh response that text uh in we are going to see in the in
Speaker 1: the project that I have So another uh another thing is about the shell. It's the first one. Probably the first one.
Speaker 2: I think it was
Speaker 1: in the this one
Speaker 2: Yeah.
Speaker 1: And the first if we can with this one, the get check keywords. What do you think we want to uh to see uh one by one?
Speaker 2: I I think going through it in order is probably best. Um Yeah, I I think let's uh pull up the the run server release notes again and like let's read through it and um yeah maybe we can show an example of what that actually is and what developers might want to do.
Speaker 1: Okay, I think at first I have I also have to uh to upgrade Mm if I I didn't mm do the it for this one, just
Speaker 2: okay.
Speaker 1: But In case someone are interesting to maybe I don't know if it's something that could be useful for some. Is it for someone?
Speaker 2: Yeah. So this project's using uh the pip tools package uh management. And yeah, we 'll And I think
Speaker 1: We are going to install the because now we have uh Django fine
Speaker 2: Uh you actually it looks like you're installing 5. 2A1 um and you want B1, yeah.
Speaker 1: Oh, but that's weird because I choose uh five uh five point um five point two point uh a one but It seems like installed uh 5. 2b1. Well
Speaker 2: uninstalled that. There's um Yeah, so it's trying to install 5. 2 A1. It found B1. And so it had to uninstall that before it could install A1.
Speaker 1: Okay. I don't know. I think it's going eh okay. Uh we did. Um Is it okay if I try to to do this?
Speaker 2: I think so. Everything but the the shell command. But that's fine. Well we can talk about that.
Speaker 1: Do you want to con to this to uninstall? Uh
Speaker 2: nope, I I think you're fine.
Speaker 1: Okay, uh think we are going to make uh the first one that is the um They're on server. They're there gonna be a warning. Let's see. Yeah.
Speaker 2: We're asking your machine to do a lot here.
Speaker 1: I don't know. Uh I tried and it wasn't so
Speaker 2: Looks like it's almost done.
Speaker 1: Here it is.
Speaker 2: Yeah.
Speaker 1: It's the and it 's a development server. Do not use in production. And if you are so interested to disable this warning, we are going to make um an variable Okay. And we try again.
Speaker 2: What what is this. env file if what is that doing that's causing this to be hidden?
Speaker 1: Because it's in the git technolore.
Speaker 2: Uh no, I I mean um wait when you're setting this uh key in your. enb file, how is that being communicated to run server to not show this um warning now.
Speaker 1: Sorry, I I didn't get the the the question.
Speaker 2: Yeah, I'm just wondering so when you add this high production warning your. env file, this is simulating something else. Like not everybody's gonna have this um this setup. I think the. env file is a specific package. Or not take that back. There's a specific package for Django that is reading this file. If you go look at the settings. So I was just pointing out like you could anywhere you can modify the invite environment um you can disable this Um
Speaker 1: okay. I can 't find it.
Speaker 2: Yeah, this is uh I think it's under config. Uh sorry, project config.
Speaker 1: Okay , here
Speaker 2: Yeah. So um
Speaker 1: Do you mean this one?
Speaker 2: Exactly. Yeah. So it's it's reading in those key value pairs from the dot env file into your environment when you run any kind of command. So any way that anybody else sets up their environment, they they can they need to set that key there. So Yeah, just highlighting that modifying a. env file might not be everyone's use case. Does that make sense?
Speaker 1: I think uh it's useful for the secret key. So I think probably it's going to be in every project. Or no?
Speaker 2: Um I think a lot of developers use the. env file uh locally, but I don't know in like production environments if they do the same thing.
Speaker 1: Okay.
Speaker 2: But anyway, yeah. So if we this message looks like it's supposed to help developers not run the development server in production and kind of help point them to like, hey, there's a better way of doing things. Which is pretty cool. And interesting enough, Rafael, uh Andy Miller, I believe, is the person who spearheaded this project, which is another Django Nut Space uh alum.
Speaker 1: I recall of this specific warning because I read inside the Django Forum. Do you I think we point also we point out inside the notes of the of this episode.
Speaker 2: Yeah, yeah. Oh cool. Yeah. I need to set up this environment variable because I do not want to see that message every time I run something, but I think it's a a nice change to the ecosystem.
Speaker 1: Okay, if we okay. Now it 's going to be interesting because uh uh In this project I find out uh it there's lots of things inside test.
Speaker 2: Could we would you mind pulling up the release notes with the the section about response? Yeah, like let's just take a quick look at that.
Speaker 1: Uh let's see this
Speaker 2: Yeah.
Speaker 1: XD text now I uh because at least uh the content uh have to be decoded. And now we have a text instead so we can just make these things Okay. Uh find this Oh
Speaker 2: I think you might want to select uh the projects. Oh, it looks like it's working. Never mind.
Speaker 1: Maybe it's better.
Speaker 2: Uh content C O uh N T E N T. There we go
Speaker 1: Okay.
Speaker 2: Yeah.
Speaker 1: You know, can you remember the shortcut for uh
Speaker 2: Yeah, it it should be are you if you're on a Mac it should be like command shift r so whatever whatever is for F, um if you use yeah, if you use R instead.
Speaker 1: Okay. And the grace is I'm not sure if it's going to work.
Speaker 1: I think let's find out. I
Speaker 2: suppose we probably should have ran the test before.
Speaker 1: Oh replace all? Yeah,
Speaker 2: you could you can show off Git stash.
Speaker 1: Sorry? Distruction
Speaker 2: Yeah, I don't know where it is in oh must be under oh shelf changes is what it is in PyCharm.
Speaker 1: I'm not sure if it's going to be um Oh should not I I'm not sure if I Can I use guest sash?
Speaker 2: Yep. Yep. It should work from the terminal.
Speaker 1: Um And then I I can use sorry.
Speaker 2: No, I um
Speaker 1: it c it chemical.
Speaker 2: Nope, you could just run it just like that and it'll stash all three of these changes, which isn't a big deal. Um yeah, it if you just run that, it's gonna put requirements and Yeah, so now you can see it. You don't have any changes anymore.
Speaker 1: Okay. Yeah, because it's stashed. And we try to uh We are going to try to make it um the test.
Speaker 2: Correct. Yeah. What is the test command for this project?
Speaker 1: Let's see in the in the readme.
Speaker 2: All right, that's pretty easy. There
Speaker 1: 's a warning, but the tests are going to be good And now I think uh uh probably for unstash uh are you going to use git unstash? Is it correct?
Speaker 2: I think it's git stash pop.
Speaker 1: Oh
Speaker 2: I have no idea why. These are just things I've memorized. Yeah.
Speaker 1: And now we are going to to make this again with because we are now changed those
Speaker 2: I always like how you can the project set up right in PyCharm for you to run the test. Oh that's not ideal.
Speaker 1: Hmm Bites a snore object. Oh no We
Speaker 2: had a bad replace.
Speaker 1: No okay, okay
Speaker 2: Ah yeah, okay, I see it now. Yeah, I should've. Oh well.
Speaker 1: Uh it's just uh Um but it's not a um it's not a method, so that's good it'll write this and Oh no, I don't know.
Speaker 2: I mean it's probably worth um scrolling through. So it if you remove content. txt and the replace value. the second one and then let's scroll through the previews.
Speaker 1: Oh okay
Speaker 2: Yeah. So we could just just to double check that like that The values like that there's nothing else that was happened to be content. txt, which is really unlikely. Um it's yeah. All these look like they're tests, which is, yeah. Okay. So if you do a find and replace now and swap content. txt with text, I think that'll get us where we want to be.
Speaker 1: They made a type one.
Speaker 2: Um well that uh the the second Text input where you have content dot text, that should just be text. Because we want to ru uh we want to end up with response. text You gotta get rid of the the leading period too. There you go.
Speaker 1: Okay.
Speaker 2: I think we're good now. We
Speaker 1: run the dust again. Uh it's good.
Speaker 2: Much better, yes. All right. Yeah, I I would really I'm looking forward to this change coming out because I have this is one of the repositories I've created. Like that's a very common um Testing technique I have, which is really crude, of check to see if this string is in the response anywhere in the response, and so doing content. decode everywhere gets um Yeah, it's a little verbose. So like being able to use content. txt would be nice.
Speaker 1: You're probably not the the only one who would use that because it's became uh something new.
Speaker 2: Yeah, that's very good point, yeah.
Speaker 1: Uh let's see. Hmm, the shell one So
Speaker 2: this
Speaker 1: what's the sorry?
Speaker 2: Are you gonna are you gonna show off the the the ticket you were able to create? Oh
Speaker 1: like do you want to uh to share the ticket?
Speaker 2: I no I I don't know. It's up to you. I think it's probably best if we focus on what works now, because everything got fixed. It's ready to go.
Speaker 1: Uh okay, that's that's shell one uh is going to include automatically the the models And also this behavior can be customized and for example uh for uh for including the side zone uh But I I wasn't able to to manage. But let's see how this going to work.
Speaker 2: Sounds good.
Speaker 1: Hmm. Allora. Oh sorry. Some Italian.
Speaker 2: That's fine. I'm sure someone else understood it.
Speaker 1: Here we are, our shell. Okay, now for the that's that's it uh when i use uh shell just shell they are going to make uh this uh 11 object without uh uh without save me uh what is going to um what he really imported but I I I I I always forgot. Is that the right? I think
Speaker 2: it's uh dash v two.
Speaker 1: Dash
Speaker 2: Uh nope. Uh no no the the if you use dash dash, that's where the full word.
Speaker 1: Okay.
Speaker 2: See it it tells you how to. Oh, nope.
Speaker 1: No.
Speaker 2: One more space.
Speaker 1: Uh l let's see how yeah, let's see how this is okay.
Speaker 2: Yes. Always back to the documentation.
Speaker 1: Yeah, when in trouble. This time should work. Probably not.
Speaker 2: The full word.
Speaker 1: Oh no, no, no. Okay. Probably this time. Let's see. The fifth one could be could be the wrong.
Speaker 2: Oh, I didn't know it worked that way. Okay.
Speaker 1: Sorry for my for this. Okay, we are going to see uh lots of uh um automatic uh import And probably yes also in for the project man in uh inside the installed apps in the settings and also some jungle things and this uh this behavior can be customized right uh and there are also some Something for that to create um inside the app
Speaker 1: inside management command a new file shell and then import whatever model that you need I uh I try to use that but it doesn't work for me So if if it's good for you, I'm going to try again here Now we're going to minka project.
Speaker 2: Um you can put it inside the newsletter app
Speaker 1: Sorry?
Speaker 2: Uh there's the the newsletter folder. There's a if you expand newsletter. Yeah, there should be a management folder in there that you can put this file in.
Speaker 1: Ah, here it is commands and I'm going to create a new command.
Speaker 2: Yeah, it's one of the interesting things about Django, like when you override some of the built-ins, you can kind of put it in any one of the apps. I'm sure there's reasoning behind how the overrides happen, but um yeah, sometimes it gets a little difficult knowing which app of yours to put the overrides in
Speaker 1: So you are saying me if I uh put the commands inside the newsletter, it's just the same as uh in the project. So it it it it doesn't matter uh how overwrite in which hub I overwrite the pr the pr uh the common.
Speaker 2: It it would matter. Um, I think that I my guess is that it has something to do with the installed app settings. And maybe that's why it it always works that way is like my installed apps always has my projects after the Django ones, and so those are getting imported later.
Speaker 1: Let's see. In the settings to me
Speaker 2: And I think this is a common pattern of usually Django Core apps and then third party and then your own or like your own then third party. Um but I again I I don't know. Um But I think my other point that I was trying to make is like you could have put this shell command in the newsletter app or the data app and it would have worked the same.
Speaker 1: Okay. Now we have our new uh import and Oh, what? Okay.
Speaker 2: Um I need to do the control Cs.
Speaker 1: Okay.
Speaker 2: Perfect.
Speaker 1: Now probably we uh could work at the same just um import just try to open the shell and this will going to work as well.
Speaker 2: Oh hm.
Speaker 1: I have something wrong. Because uh previously it were 11 objects, now we have should have re reversed and resolved, but I don't see I don't know what I have been what I did wrong.
Speaker 2: Hmm Okay, let's can you type in reverse and see if it exists just to confirm that it doesn't?
Speaker 1: Reverse. Uh
Speaker 2: no in in the terminal.
Speaker 1: Okay.
Speaker 2: I'm curious if like maybe it did get imported, but Um oh I I meant in the shell.
Speaker 1: I mean on the shell. Oh sorry.
Speaker 2: I I misspoke. Nope, that's my fault.
Speaker 1: Okay. So
Speaker 2: yeah.
Speaker 1: Just like this.
Speaker 2: Yep. Okay. Alright. So it it definitely didn't get imported.
Speaker 1: Artifact.
Speaker 2: I wonder okay, so let's exit out of the shell and see what commands are available. If you just run python managepy.
Speaker 1: Just um
Speaker 2: Yep, just run that. And it should show us all the Okay, so it does say shells there, but it likely is also Was it under the Django one too?
Speaker 1: Uh the bisho, but that's not it.
Speaker 2: Yeah, okay, so it is mm.
Speaker 1: Inside this newsletter, but inside the newsletter, there's a shell.
Speaker 2: Yeah. Hmm, let's see here. Try I wonder if there's a difference here in versions of Django. So what if um When you run pip install Django dash, um let me type it out here in the chat. It's in the zoom chat. Um so pip install
Speaker 2: Django and then upgrade and then allow pre pre-releases. And so this is gonna this should install Django five point two B one. And then let's rerun this. Like because maybe there is a difference between the beta and the alpha.
Speaker 1: Success when it's done, right?
Speaker 2: Yeah, so let's run your the shell command again.
Speaker 1: Working in progress.
Speaker 2: It's good old re-indexing. Okay, yeah. So they they must have changed the API a little bit between the alpha and the beta. But it looks like yeah, so now if you type resolve. Alright. Cool.
Speaker 1: Here it is. And I I recall because I think the new one uh at the bottom. I'm not sure if it is a pattern, but Even in the uh in let's see, here it is, in the In the example, we're at the bottom. I'm not sure if it's going to be at every time at the bottom the new one or just the this type of resolving reverse import.
Speaker 2: Um let's take a look at your the the git what is it called git auto imports method that you override
Speaker 1: Probably
Speaker 2: So
Speaker 1: Yes.
Speaker 2: Yeah, so what it's doing is it's calling the parent classes get auto imports and then getting that list and then adding reverse and resolve to the end of it. So if you were to actually move the list of reverse and resolve to before that and then appended Get auto imports to the end of it. Like if you switch the order on that, that's what would switch the order on how things would get imported in the shell.
Speaker 1: Mm, yeah. So it it's customizable even the the order of the import.
Speaker 2: Yes, yeah. I wonder what um can you I want to see what happens if you try to import the same thing twice.
Speaker 1: Hmm.
Speaker 2: So like if you it it before super, if you have another list. Oh yeah, this works too. Yeah.
Speaker 1: Do you think it's going to uh work?
Speaker 2: I've got no idea. Uh this is it's not released yet, so I'm I'm comfortable with us testing it, but
Speaker 1: Twelve, huh? Reverse and reverse. But uh So it it didn't recognize uh uh uh the difference between um the the adding the the models that we had. But at least I think it recognized at a certain point because the the objects now are 12 and not 13
Speaker 2: Oh yeah, yeah. And then it just looks like the log of because it says reverse reverse at the the last line. But yeah, okay. So it looks like a a minor, minor bug if anyone out there wants to open up a small ticket. But cool, it didn't break, it works. Uh let well let let's confirm it. Does reverse exist in the shell And Baptiste from the chat has said that the reason git auto imports didn't work before is it was used to be called git namespaces. The method got renamed between alpha and beta. So thank you, Baptiste. And cool. Looks like
Speaker 2: yeah. Another excellent feature that I'm really looking forward to having.
Speaker 1: Yeah, I I think uh the our first uh idea is to import time zone every time inside the um I can recall the But uh but it could be a good idea to to having inside uh yeah the project.
Speaker 2: Time zone and time delta. Those are the two that I use quite a bit All right, so that is the features that we're excited about. And then there's a fourth thing we want to look at.
Speaker 1: The third one, the automatic out automatic and customized uh customizable model. Uh the the last one is interesting because I think I had some problem to understand it.
Speaker 2: I did too. Um this yeah I I'm glad that you put it this on the list because yeah, let's take a look at the the docs, the release notes. Um I think it's written more yeah. Yeah, here So the sentence like it it it makes sense. I just don't know what the implications of it are. Um
Speaker 2: Like I I I know with commands, every time you run a command, there are the checks that run within Django. Um and apparently like now it's saying like you can run database dependent checks. Like my question would kind of be like What is a database dependent check? Like how does this differ from what exists? Like when do I know when to opt into it? And then also like other question is, are there other things I can opt into? Yeah, so I think with this one we might actually have to dive a little bit into the code base to see how this gets used.
Speaker 1: is still working. Let's see.
Speaker 2: I wonder could you I think you could even do it in PyCharm.
Speaker 1: Oh sorry I just follow the documentation and just like I did uh in uh uh when I first read uh read it.
Speaker 2: Have you ever used the git go to definition in Pipe? You wanna test it out?
Speaker 1: Can you would you like to
Speaker 2: No, no, I'll I'll walk you through it. I because I used um shall be fine. If you minimize the terminal here
Speaker 1: Like this?
Speaker 2: Yep. Okay. So if you right click on command in the center on line for the the shell dot command
Speaker 1: Uh I I sorry I
Speaker 2: on line four, there's shell. command what you're uh inheriting from. If you right-click on that.
Speaker 1: The on the command.
Speaker 2: Other command, the the one that you're inheriting from. And then there's go to This
Speaker 1: one.
Speaker 2: And then there's yeah, there should be another menu that'll pop up that says go to definition. Uh declaration or usages. Alright, so now this so it's command B is the shortcut on a Mac. And so if you ever On a method or a class, you hit command B, it'll try to take you to whatever class or method like the that that was the parent of that. And so it's a pretty cool way to dive into like your third-party packages or like Django from your own project. And then you don't have to worry about GitHub being down or Something like that.
Speaker 2: And so this took us to the shell command, which is a subclass of base command. And so we actually want to look at base command rather than shell command. So if you go to declaration and usages on base command, that should take us to the next level up. And now we should be where your GitHub page is.
Speaker 1: I recall that we're just okay, never mind. I recall that we're also some message before oh it's so slow sorry Oh
Speaker 2: no, you're you're fine. I was reading Baptiste had uh an answer in the chat for us of uh the imports. And he was saying that if we have i sort installed, the list that gets printed in the shell also gets sorted. So that would be why Things might be a little bit different depending on your environment.
Speaker 1: Okay. Because I also see there were uh i shell uh uh iPython and another type of shell Available.
Speaker 2: Yeah. But iSort is um like a linting formatting package that will rearrange your import statements at the top of your file. Um
Speaker 1: Okay.
Speaker 2: Uh yeah, so if we search for what was it, Git Check Quargs?
Speaker 1: Uh I think it's could be so
Speaker 2: Should be around four seventy. Yeah. Okay Yeah, so the the I don't I don't know Django's code base super well or well at all. Or even from I'm not even from it. Like, yeah. Um, so I don't really know what this is doing. If someone were to ask me to explain it. It probably wouldn't go well. Um what my next step would be is to let's see where this is all being used. Um so like search for dot
Speaker 2: git check quargs um and see if we can learn anything from how Django calls this and like what's being passed in. Because
Speaker 1: Do you mean in this way?
Speaker 2: Yep. And you're actually, I think.
Speaker 1: No, I think I did something wrong.
Speaker 2: Nope. So I select directory now. So wherever you search from in PyCharm, it's gonna actually limit um whatever that folder is, that directory. And so Rather than using the drop down, you might be better off clicking into the text box and then going to the right Oh, no. Hmm. Could you close out of this again and then try the search one more time? And then go to the right.
Speaker 1: No.
Speaker 2: Oh, dang. Okay. Um Alright, you can hit scope. Oh
Speaker 1: sorry.
Speaker 2: Nope, we're all right. So there's a way to get PyCharm to search through all your site packages as well. So if you click on the scope tab. And then yeah, you have to switch the drop down to project in libraries, I believe. Yeah. So the difficulty here though is that it's going to search through all of your packages. So it's Django and all the other third-party packages that are installed. So it can be If you have something that's named multiple times, like you're it's going to show up in multiple packages. So you have to be a little bit careful of which search result we're looking at. But we can see
Speaker 2: There are a couple of usages here. So hmm. Can you scroll down a little? Is there anything under that last run server? Okay. So it looks like there's three usages. Um Do you wanna so don't fully click into it, just select it here so the preview below updates. Yeah.
Speaker 1: This one?
Speaker 2: Mm-hmm And
Speaker 1: probably this. Yeah, this is the definition One thing that I uh I found uh interesting is that um requires system checks is a dictionary that uh um That has
Speaker 1: all of the system checks that you are going to uh to make. Unfortunately, I don't quite understand um uh why um uh they are going to be uh all in the same um in the same keywords as tags But uh as we can see here, there will be other um other um K for the dictionary for the database. Probably there will be other keywords and other other things that are going to be in this uh in this dictionary. You get check
Speaker 1: works.
Speaker 2: I just noticed that that is renaming the database key to databases Interesting. Okay. Um, so Baptiste actually reached out and shared in the uh the zoom chat the built-in tags for the check system so that dictionary that you're talking about and like the various categories um
Speaker 1: Oh, there it is.
Speaker 2: Okay. So that's the bit of in okay. That's the bit of information that we were missing. Database checks are not run by default. Because they do more than static code analysis as regular checks do. They're only run by the migrate command, or if you specify the database option. Which okay, that might make sense as to why they're doing the rename then of database to databases, because If you use the database um parameter like that, that option, that's probably what's gonna wire it together for any other uh command that runs, it'll say like, okay, now you have to check the database.
Speaker 2: But with migrate, it's saying use all the databases or check all the potentially check all the databases because you don't specify. That might not be true, but I would be I'd be curious about that. Yeah. This
Speaker 2: is scared. Sorry, I'm looking through the check command now on my side
Speaker 2: Yeah. Um Well actually, no, I take that back. Um so I actually looked at I was trying to figure out why it was renaming it to databases uh for the migrate command. Um And ended up in the the check method of base command, which accepts the a parameter called named databases. And that's where it's easy.
Speaker 2: Okay. Interesting. Yeah. I I I think I understand more of it now than I do before. How do you feel about it?
Speaker 1: Can we make um recap of what what do you think? It's important. I can I can do first and you can at the or or maybe level Smooth it out what I going to um Let's start from uh from this. I think there were uh get check without QRs before and then the Because there were a previous command and now with this new method we can uh specify which type of
Speaker 1: uh uh which type of um uh I I can recall um which type of tags we are going to uh to test Automatically.
Speaker 2: Yeah, I think so. I I think it it's actually exactly how it's written of It allows you to write a custom command and have it hook into running the same checks that the migrate command would. I'm guessing if we were to go find the PR that added this, you would see in the previous diff or like the previous version of the code. commands weren't able to run these all these database checks that the migrate command was and people were wanting to be able to run those commands or sorry excuse me those checks as a part of their new commands And so by exposing this at the base command level, you're now allowing, or Django is now allowing developers to run
Speaker 2: their database checks in more ways. And I think one of the ways could potentially be like if you're developing a check production environment command or like a a health check command that runs periodically in your production environment. You would actually want it to go make these connections to your database and see is it all set up correctly. And I think that would only be possible if you have the ability to hook into it like this.
Speaker 2: Right. Anything Else that you would like to say
Speaker 1: I think it was uh really interesting to find what was new. Uh I I I I clearly recall how the discussion inside the the Django Forum were And I I I didn't follow the entire conversation inside the forum, but at first I saw uh that uh this um problem where um um were highlighted and then there were uh there is a solution uh for in uh jungle fip too so I think this this uh I like it more
Speaker 2: Yeah. Yeah. I I think this will be very helpful for new developers or people that are using Django in ways that They may not be aware that aren't ideal. And so yeah, I think this is a step in the right direction. of uh improving our deployment story. But my my heart goes to the the content. txt change And reducing how much code I have to write in my my tests. That is that's definitely my favorite of 5. 2 here. There are so many changes.
Speaker 1: Yeah, there's a lot. I it was also I I I was also like the um the shell one because there um Uh you can uh I I uh I follow the um uh the tutorial And then uh at um I think that the third uh part of the tutorial, the second third, uh they said So you have to import your uh your model and to make those um to make those uh those query and everything else And now it's uh it's no more
Speaker 1: um that's that's not uh more required. It's not required anymore because it's now integrated your and every other uh apps that you have in your uh in your project. I think it's uh really because every time you you quit you uh you open and uh you open and quit your shell you have to uh every time uh import your model to make It it could be it it was not so uh so so difficult. It was not so difficult, but you have to do every time. So I I didn't use it uh a uh every time and this is going to be more easy.
Speaker 2: Yeah, yeah. It's really great that I Agreed. I I've been using Django extensions um uh third party package Django Django dash extensions their shell plus command which has had this functionality for a very long time and yeah that it's it's such a time saver um yeah This is really cool. We didn't talk about Git bound field, which is just below this. That um yeah, as you were scrolling through, it was like, oh, oh no, that's composite primary keys. Below pro that which is also really cool. That that's like a Four digit ticket number. Yeah, that one. This one's also really yeah. So um yeah, we didn't cover some of the the bigger things in here either.
Speaker 2: Um But definitely recommend folks to take a look at this. Thank you to all the contributors who helped work on this and add these awesome features. And thank you to the fellows, you know, for Sheparding all this stuff in and fixing the release blockers, doing the releases. Yeah.
Speaker 1: Yeah, also if you mention it because I also find uh uh I I try uh also the shell, but uh using uh Django admin uh command and I was trying uh this new uh this new feature but at least uh I found out that it was uh um a release blocker so there was really um It didn't work for uh um for the um for the Django admin shell. And now it is
Speaker 2: Yeah, that was fun. I that's I think I've only ever created two accepted Django tickets. So yeah. That's pretty cool that um I don't know. I think any contribution to Django is a lot of fun. Uh I know it's always nerve-wracking to interact on it can be inter nervous. Can't use my words. I get nervous when I interact on track at times. So
Speaker 1: Yeah, also thank you, theme, because that when I when I tried the first time I did it, I find uh uh that didn't work. Uh I was asking me uh what I did wrong and instead it wasn't uh something that I did but it's something that it could be fixed. So thank you.
Speaker 2: I I still remember that car. I was like, what? How is this not working? And then realized like, oh, you're running a entirely different command. Yeah. All right. Well cool. I think next time we'll be back, most likely with Sage and doing code reviews again. That'll be fun Um I guess we're not we we don't have anything to scream about this time, which is a little disappointing. But I suppose. Yeah. Thank you everyone for joining. We'll talk to you next time.
Speaker 1: Thank you. Bye
Speaker 2: everyone.
Django 5.2 warns that `runserver` is a development server and should not be used in production. The warning can be disabled by setting the relevant environment variable, such as `DJANGO_RUNSERVER_HIDE_WARNING`, through the projectβs environment configuration.
Discussed at 6:30Django 5.2 adds `response.text`, so tests can inspect decoded response text directly instead of accessing `response.content` and decoding it manually.
Discussed at 11:11Yes. The Django shell can automatically import models from installed apps, along with selected Django utilities; the behavior can be customized by overriding the shell commandβs auto-import method.
Discussed at 20:59Django 5.2 exposes check configuration at the base command level, allowing custom commands to opt into database-dependent checks. These checks are not run by default because they require database access; they run for commands such as `migrate`, or when the database option is explicitly requested.
Discussed at 48:17Note: We understand that names change, people change, and bodies change. We respect each individual's journey and privacy. If you have any concerns about a video or need us to remove content, please don't hesitate to contact us. We will handle your request with care and promptly address any issues.
Published July 12, 2025
Published January 13, 2025
Published January 13, 2025
Published November 26, 2024
Published April 15, 2026
Published April 12, 2026
Published December 5, 2025
Published November 11, 2025
Published October 23, 2025
Published July 12, 2025